記錄一些 PHP 挺重要但又不常用的東西
1. php://input抓post丟的全部資料
說明: php://input allows you to read raw POST data. It is a less memory intensive alternative to $HTTP_RAW_POST_DATA and does not need any special php.ini directives. php://input is not available with enctype="multipart/form-data".
用法: $HTTP_RAW_POST_DATA = file_get_contents( 'php://input' );
 
2. fputcsv  ─  產生 CSV 檔   
    fgetcsv  ─  讀取 CSV 檔

 http://us2.php.net/manual/en/function.fputcsv.php
 http://us2.php.net/manual/en/function.fgetcsv.php

 另外在產生  \r\n 時, 要記得用雙引號.
 因為
單引號:表純字串
 雙引號:會去判斷與解釋字串裡的變數

 
3. php 在檔案內 直接 寫進 error log 方法
  ini_set("error_log", "on");
  error_log(print_r($location_key, true));
 
4. 處理UTF8編碼
    記得先安裝php-mbstring
 

kendoit 發表在 痞客邦 留言(0) 人氣()



看鳥哥知道了一套分析apache log的工具 - AWStats
 
加入來源國家分析 - 引用來源:【Awstats 安裝國家和城市插件(GeoIP/GeoIPCityLite)】

kendoit 發表在 痞客邦 留言(0) 人氣()

In Silico PCR is implemented by Jim Kent and located in UCSC Genome Browser.
isPcr 是 Jim Kent 軟體中非常好用的工具
isPcr - Standalone v 34x2 In-Situ PCR Program
usage:
   isPcr database query output
where database is a fasta, nib, or twoBit file or a text file containing
a list of these files,  query is a text file file containing three columns: name,
forward primer, and reverse primer,  and output is where the results go.
The names 'stdin' and 'stdout' can be used as file names to make using the
program in pipes easier.
options:
   -ooc=N.ooc  Use overused tile file N.ooc.  N should correspond to
               the tileSize
   -tileSize=N the size of match that triggers an alignment.
               Default is 11 .
   -stepSize=N spacing between tiles. Default is 5.
   -maxSize=N - Maximum size of PCR product (default 4000)
   -minSize=N - Minimum size of PCR product (default 0)
   -minPerfect=N - Minimum size of perfect match at 3' end of primer (default 15)
   -minGood=N - Minimum size where there must be 2 matches for each mismatch (default 15)
   -mask=type  Mask out repeats.  Alignments won't be started in masked region
               but may extend through it in nucleotide searches.  Masked areas
               are ignored entirely in protein or translated searches. Types are
                 lower - mask out lower cased sequence
                 upper - mask out upper cased sequence
                 out   - mask according to database.out RepeatMasker .out file
                 file.out - mask database according to RepeatMasker file.out
   -makeOoc=N.ooc Make overused tile file. Database needs to be complete genome.
   -repMatch=N sets the number of repetitions of a tile allowed before
               it is marked as overused.  Typically this is 256 for tileSize
               12, 1024 for tile size 11, 4096 for tile size 10.
               Default is 1024.  Only comes into play with makeOoc
   -flipReverse Reverse complement reverse (second) primer before using
   -out=XXX - Output format.  Either
      fa - fasta with position, primers in header (default)
      bed - tab delimited format. Fields: chrom/start/end/name/score/strand
      psl - blat format.

kendoit 發表在 痞客邦 留言(0) 人氣()

$- 当前页可打印的行数,属于Perl格式系统的一部分
$! 根据上下文内容返回错误号或者错误串
$” 列表分隔符
$# 打印数字时默认的数字输出格式
$$ Perl解释器的进程ID
$% 当前输出通道的当前页号
$& 与上个格式匹配的字符串
$( 当前进程的组ID
$) 当前进程的有效组ID
$* 设置1表示处理多行格式.现在多以/s和/m修饰符取代之.
$, 当前输出字段分隔符
$. 上次阅读的文件的当前输入行号
$/ 当前输入记录分隔符,默认情况是新行
$: 字符设置,此后的字符串将被分开,以填充连续的字段.
$; 在仿真多维数组时使用的分隔符.
$? 返回上一个外部命令的状态
$@ Perl解释器从eval语句返回的错误消息
$[ 数组中第一个元素的索引号
$\ 当前输出记录的分隔符
$] Perl解释器的子版本号
$^ 当前通道最上面的页面输出格式名字
$^A 打印前用于保存格式化数据的变量
$^D 调试标志的值
$^E 在非UNIX环境中的操作系统扩展错误信息
$^F 最大的文件捆述符数值
$^H 由编译器激活的语法检查状态
$^I 内置控制编辑器的值
$^L 发送到输出通道的走纸换页符
$^M 备用内存池的大小
$^O 操作系统名
$^P 指定当前调试值的内部变量
$^R 正则表达式块的上次求值结果
$^S 当前解释器状态
$^T 从新世纪开始算起,脚步本以秒计算的开始运行的时间
$^W 警告开关的当前值
$^X Perl二进制可执行代码的名字
$_ 默认的输入/输出和格式匹配空间
$| 控制对当前选择的输出文件句柄的缓冲
$~ 当前报告格式的名字
$` 在上个格式匹配信息前的字符串
$’ 在上个格式匹配信息后的字符串
$+ 与上个正则表达式搜索格式匹配的最后一个括号
$< 当前执行解释器的用户的真实ID
$ 含有与上个匹配正则表达式对应括号结果
$= 当前页面可打印行的数目
$> 当前进程的有效用户ID
$0 包含正在执行的脚本的文件名
$ARGV 从默认的文件句柄中读取时的当前文件名
%ENV 环境变量列表
%INC 通过do或require包含的文件列表
%SIG 信号列表及其处理方式
@_ 传给子程序的参数列表
@ARGV 传给脚本的命令行参数列表
@INC 在导入模块时需要搜索的目录列表
$-[0]和$+[0] 代表当前匹配的正则表达式在被匹配的字符串中的起始和终止的位置

kendoit 發表在 痞客邦 留言(0) 人氣()

原來CSS裡面的註解要用
1. /*    */      <------這個比較相容於所有的瀏覽器
2. //               <----- IE8, FireFox 3.6都可以正常work,但是IE 6會出錯

kendoit 發表在 痞客邦 留言(0) 人氣()

SED單行腳本快速參考
#在每一行後面增加一空行sed G

#將原來的所有空行刪除並在每一行後面增加一空行。
#這樣在輸出的文本中每一行後面將有且只有一空行。
sed ‘/^$/d;G’
#在每一行後面增加兩行空行sed ‘G;G’
#將第一個腳本所產生的所有空行刪除(即刪除所有偶數行)
sed ‘n;d’
#在匹配式樣“regex”的行之前插入一空行sed ‘/regex/{x;p;x;}’
#在匹配式樣“regex”的行之後插入一空行sed ‘/regex/G’
#在匹配式樣“regex”的行之前和之後各插入一空行sed ‘/regex/{x;p;x;G;}’
編號:
——–
#為文件中的每一行進行編號(簡單的左對齊方式)。 這裡使用了“製表符”
# (tab,見本文末尾關於’\t’的用法的描述)而不是空格來對齊邊緣。
sed = filename | sed ‘N;s/\n/\t/’
#對文件中的所有行編號(行號在左,文字右端對齊)。
sed = filename | sed ‘N; s/^/ /; s/ *\(.\{6,\}\)\n/\1 /’
#對文件中的所有行編號,但只顯示非空白行的行號。
sed ‘/./=’ filename | sed ‘/./N; s/\n/ /’
#計算行數(模擬”wc -l”)
sed -n ‘$=’
文本轉換和替代:
——–
# Unix環境:轉換DOS的新行符(CR/LF)為Unix格式。
sed ’s/.$//’ #假設所有行以CR/LF結束sed ’s/^M$//’ #在bash/tcsh中,將按Ctrl-M改為按Ctrl-V
sed ’s/
$//’ # ssed、gsed 3.02.80,及更高版本# Unix環境:轉換Unix的新行符(LF)為DOS格式。
sed “s/$/`echo -e \\\r`/” #在ksh下所使用的命令sed ’s/$’”/`echo \\\r`/” #在bash下所使用的命令sed “s/$/`echo \\\r`/” #在zsh下所使用的命令sed ’s/$/\r/’ # gsed 3.02.80及更高版本# DOS環境:轉換Unix新行符(LF)為DOS格式。
sed “s/$//” #方法1
sed -np #方法2
# DOS環境:轉換DOS新行符(CR/LF)為Unix格式。
#下面的腳本只對UnxUtils sed 4.0.7及更高版本有效。 要識別UnxUtils版本的# sed可以通過其特有的“–text”選項。 你可以使用幫助選項(“–help”)看#其中有無一個“–text”項以此來判斷所使用的是否是UnxUtils版本。 其它DOS
#版本的的sed則無法進行這一轉換。 但可以用“tr”來實現這一轉換。
sed “s/\r//” infile >outfile # UnxUtils sed v4.0.7或更高版本tr -d \r outfile # GNU tr 1.22或更高版本#將每一行前導的“空白字符”(空格,製表符)刪除#使之左對齊sed ’s/^[ \t]*//’ #見本文末尾關於’\t’用法的描述#將每一行拖尾的“空白字符” (空格,製表符)刪除sed ’s/[ \t]*$//’ #見本文末尾關於’\t’用法的描述#將每一行中的前導和拖尾的空白字符刪除sed ‘ s/^[ \t]*//;s/[ \t]*$//’
#在每一行開頭處插入5個空格(使全文向右移動5個字符的位置)
sed ’s/^/ /’
#以79個字符為寬度,將所有文本右對齊sed -e :a -e ’s/^.\{1,78\}$/ &/;ta’ # 78個字符外加最後的一個空格#以79個字符為寬度,使所有文本居中。 在方法1中,為了讓文本居中每一行的前#頭和後頭都填充了空格。 在方法2中,在居中文本的過程中只在文本的前面填充#空格,並且最終這些空格將有一半會被刪除。 此外每一行的後頭並未填充空格。
sed -e :a -e ’s/^.\{1,77\}$/ & /;ta’ #方法1
sed -e :a -e ’s/^.\{1,77\}$/ &/;ta’ -e ’s/\( *\)\1/\1/’ #方法2
#在每一行中查找字串“foo”,並將找到的“foo”替換為“bar”
sed ’s/foo/bar/’ #只替換每一行中的第一個“foo”字串sed ’s/foo/bar/4′ #只替換每一行中的第四個“foo”字串sed ‘ s/foo/bar/g’ #將每一行中的所有“foo”都換成“bar”
sed ’s/\(.*\)foo\(.*foo\)/\1bar\2/’ #替換倒數第二個“foo”
sed ’s/\(.*\)foo/\1bar/’ #替換最後一個“foo”
#只在行中出現字串“baz”的情況下將“foo”替換成“bar”
sed ‘/baz/s/foo/bar/g’
#將“foo”替換成“bar”,並且只在行中未出現字串“baz”的情況下替換sed ‘/baz/!s/foo/bar/g’
#不管是“scarlet”“ruby”還是“puce”,一律換成“red”
sed ’s/scarlet/red/g;s/ruby/red/g;s/puce/red/g’ #對多數的sed都有效gsed ’s/scarlet\|ruby\|puce/red/g’ #只對GNU sed有效#倒置所有行,第一行成為最後一行,依次類推(模擬“tac”)。
#由於某些原因,使用下面命令時HHsed v1.5會將文件中的空行刪除sed ‘1!G;h;$!d’ #方法1
sed -n ‘1!G;h;$p’ #方法2
#將行中的字符逆序排列,第一個字成為最後一字,……(模擬“rev”)
sed ‘/\n/!G;s/\(.\)\(.*\n\)/&\2\1/;//D;s/.//’
#將每兩行連接成一行(類似“paste”)
sed ‘$!N;s/\n/ /’
#如果當前行以反斜杠“\”結束,則將下一行並到當前行末尾#並去掉原來行尾的反斜杠sed -e :a -e ‘/\\$/N; s/ \\\n//; ta’
#如果當前行以等號開頭,將當前行並到上一行末尾#並以單個空格代替原來行頭的“=”
sed -e :a -e ‘$!N;s/\n=/ /;ta’ -e ‘P;D’
#為數字字串增加逗號分隔符號,將“1234567”改為“1,234,567”
gsed ‘:a;s/\B[0-9]\{3\}\>/,&/;ta’ # GNU sed
sed -e :a -e ’s/\(.*[0-9]\)\([0-9]\{3\}\)/\1,\2/;ta’ #其他sed
#為帶有小數點和負號的數值增加逗號分隔符(GNU sed)
gsed -r ‘:a;s/(^|[^0-9.])([0-9]+)([0-9]{3})/\1\2,\3/g;ta ‘
#在每5行後增加一空白行(在第5,10,15,20,等行後增加一空白行)
gsed ‘0~5G’ #只對GNU sed有效sed ‘n;n;n;n;G;’ #其他sed
選擇性地顯示特定行:
——–
#顯示文件中的前10行(模擬“head”的行為)
sed 10q
#顯示文件中的第一行(模擬“head -1”命令)
sed q
#顯示文件中的最後10行(模擬“tail”)
sed -e :a -e ‘$q;N;11,$D;ba’
#顯示文件中的最後2行(模擬“tail -2”命令)
sed ‘$!N;$!D’
#顯示文件中的最後一行(模擬“tail -1”)
sed ‘$!d’ #方法1
sed -n ‘$p’ #方法2
#顯示文件中的倒數第二行sed -e ‘$!{h;d;}’ -ex #當文件中只有一行時,輸入空行sed -e ‘1{$q;}’ -e ‘$ !{h;d;}’ -ex #當文件中只有一行時,顯示該行sed -e ‘1{$d;}’ -e ‘$!{h;d;}’ -ex #當文件中只有一行時,不輸出#只顯示匹配正則表達式的行(模擬“grep”)
sed -n ‘/regexp/p’ #方法1
sed ‘/regexp/!d’ #方法2
#只顯示“不”匹配正則表達式的行(模擬“grep -v”)
sed -n ‘/regexp/!p’ #方法1,與前面的命令相對應sed ‘/regexp/d’ #方法2,類似的語法#查找“regexp”並將匹配行的上一行顯示出來,但並不顯示匹配行sed -n ‘/regexp/{g;1!p;};h’
#查找“regexp”並將匹配行的下一行顯示出來,但並不顯示匹配行sed -n ‘/regexp/{n;p;}’
#顯示包含“regexp”的行及其前後行,並在第一行之前加上“regexp”所#在行的行號(類似“grep -A1 -B1”)
sed -n -e ‘/regexp/{=;x;1!p;g;$!N;p;D;}’ -eh
#顯示包含“AAA”、“BBB”或“CCC”的行(任意次序)
sed ‘/AAA/!d; /BBB/!d; /CCC/!d’ #字串的次序不影響結果#顯示包含“AAA”、“BBB”和“CCC”的行(固定次序)
sed ‘/AAA.*BBB.*CCC/!d’
#顯示包含“AAA”“BBB”或“CCC”的行(模擬“egrep”)
sed -e ‘/AAA/b’ -e ‘/BBB/b’ -e ‘/CCC/b’ -ed #多數sed
gsed ‘/AAA\|BBB\|CCC/!d’ #對GNU sed有效#顯示包含“AAA”的段落(段落間以空行分隔)
# HHsed v1.5必須在“x;”後加入“G;”,接下來的3個腳本都是這樣sed -e ‘/./{H;$!d;}’ -e ‘x;/AAA /!d;’
#顯示包含“AAA”“BBB”和“CCC”三個字串的段落(任意次序)
sed -e ‘/./{H;$!d;}’ -e ‘x;/AAA/!d;/BBB/!d;/CCC/!d’
#顯示包含“AAA”、“BBB”、“CCC”三者中任一字串的段落(任意次序)
sed -e ‘/./{H;$!d;}’ -e ‘x;/AAA/b’ -e ‘/BBB/b’ -e ‘/CCC/b’ -ed
gsed ‘/./{H;$!d;};x;/AAA\|BBB\|CCC/b;d’ #只對GNU sed有效#顯示包含65個或以上字符的行sed -n ‘/ ^.\{65\}/p’
#顯示包含65個以下字符的行sed -n ‘/^.\{65\}/!p’ #方法1,與上面的腳本相對應sed ‘/^.\{65\}/d’ #方法2,更簡便一點的方法#顯示部分文本——從包含正則表達式的行開始到最後一行結束sed -n ‘/regexp/,$p’
#顯示部分文本——指定行號範圍(從第8至第12行,含8和12行)
sed -n ‘8,12p’ #方法1
sed ‘8,12!d’ #方法2
#顯示第52行sed -n ‘52p’ #方法1
sed ‘52!d’ #方法2
sed ‘52q;d’ #方法3,處理大文件時更有效率#從第3行開始,每7行顯示一次gsed -n ‘3~7p’ #只對GNU sed有效sed -n ‘3,$ {p;n;n;n;n;n;n;}’ #其他sed

註解:原來sed有可以中斷的方法,找到目標後馬上離開檔案(在肥大檔案中顯示特定列數,非常有效率)
#顯示兩個正則表達式之間的文本(包含)
sed -n ‘/Iowa/,/Montana/p’ #區分大小寫方式選擇性地刪除特定行:
——–
#顯示通篇文檔,除了兩個正則表達式之間的內容sed ‘/Iowa/,/Montana/d’
#刪除文件中相鄰的重複行(模擬“uniq”)
#只保留重複行中的第一行,其他行刪除sed ‘$!N; /^\(.*\)\n\1$/!P; D’
#刪除文件中的重複行,不管有無相鄰。 注意hold space所能支持的緩存#大小,或者使用GNU sed。
sed -n ‘G; s/\n/&&/; /^\([ -~]*\n\).*\n\1/d; s/\n//; h; P’
#刪除除重複行外的所有行(模擬“uniq -d”)
sed ‘$!N; s/^\(.*\)\n\1$/\1/; t; D’
#刪除文件中開頭的10行sed ‘1,10d’
#刪除文件中的最後一行sed ‘$d’
#刪除文件中的最後兩行sed ‘N;$!P;$!D;$d’
#刪除文件中的最後10行sed -e :a -e ‘$d;N;2,10ba’ -e ‘P;D’ #方法1
sed -n -e :a -e ‘1,10!{P;N;D;};N;ba’ #方法2
#刪除8的倍數行gsed ‘0~8d’ #只對GNU sed有效sed ‘n;n;n;n;n;n;n;d;’ #其他sed
#刪除匹配式樣的行sed ‘/pattern/d’ #刪除含pattern的行。 當然pattern
#可以換成任何有效的正則表達式#刪除文件中的所有空行(與“grep ‘.’ ”效果相同)
sed ‘/^$/d’ #方法1
sed ‘/./!d’ #方法2
#只保留多個相鄰空行的第一行。 並且刪除文件頂部和尾部的空行。
# (模擬“cat -s”)
sed ‘/./,/^$/!d’ #方法1,刪除文件頂部的空行,允許尾部保留一空行sed ‘/^$/N;/\n$/D’ #方法2,允許頂部保留一空行,尾部不留空行#只保留多個相鄰空行的前兩行。
sed ‘/^$/N;/\n$/N;//D’
#刪除文件頂部的所有空行sed ‘/./,$!d’
#刪除文件尾部的所有空行sed -e :a -e ‘/^\n*$/{$d;N;ba’ -e ‘}’ #對所有sed有效sed -e :a -e ‘/ ^\n*$/N;/\n$/ba’ #同上,但只對gsed 3.02.*有效#刪除每個段落的最後一行sed -n ‘/^$/{p;h;};/ ./{x;/./p;}’
特殊應用:
——–
#移除手冊頁(man page)中的nroff標記。 在Unix System V或bash shell下使#用’echo’命令時可能需要加上-e選項。
sed “s/.`echo \\\b`//g” #外層的雙括號是必須的(Unix環境)
sed ’s/.^H//g’ #在bash或tcsh中,按Ctrl-V再按Ctrl-H
sed ’s/.//g’ # sed 1.5,GNU sed,ssed所使用的十六進制的表示方法#提取新聞組或e-mail的郵件頭sed ‘/^$/q’ #刪除第一行空行後的所有內容#提取新聞組或e-mail的正文部分sed ‘1,/^$/d’ #刪除第一行空行之前的所有內容#從郵件頭提取“Subject”(標題欄字段),並移除開頭的“Subject:”字樣sed ‘/^Subject: */!d; s///;q’
#從郵件頭獲得回复地址sed ‘/^Reply-To:/q; /^From:/h; /./d;g;q’
#獲取郵件地址。 在上一個腳本所產生的那一行郵件頭的基礎上進一步的將非電郵#地址的部分剃除。 (見上一腳本)
sed ’s/ *(.*)//; s/>.*//; s/.*[:< ] *//’
#在每一行開頭加上一個尖括號和空格(引用信息)
sed ’s/^/> /’
#將每一行開頭處的尖括號和空格刪除(解除引用)
sed ’s/^> //’
#移除大部分的HTML標籤(包括跨行標籤)
sed -e :a -e ’s/< [^>]*>//g;/zipup.bat
dir /b *.txt | sed “s/^\(.*\)\.TXT/pkzip -mo \1 \1.TXT/” >>zipup.bat
使用SED:Sed接受一個或多個編輯命令,並且每讀入一行後就依次應用這些命令。
當讀入第一行輸入後,sed對其應用所有的命令,然後將結果輸出。 接著再讀入第二行輸入,對其應用所有的命令……並重複這個過程。 上一個例子中sed由標準輸入設備(即命令解釋器,通常是以管道輸入的形式)獲得輸入。 在命令行給出一個或多個文件名作為參數時,這些文件取代標準輸入設備成為sed的輸入。 sed的輸出將被送到標準輸出(顯示器)。 因此:
cat filename | sed ‘10q’ #使用管道輸入sed ‘10q’ filename #同樣效果,但不使用管道輸入sed ‘10q’ filename > newfile #將輸出轉移(重定向)到磁盤上要了解sed命令的使用說明,包括如何通過腳本文件(而非從命令行)來使用這些命令,請參閱《sed & awk》第二版,作者Dale Dougherty和Arnold Robbins
(O’Reilly,1997;http://www.ora.com),《UNIX Text Processing》,作者Dale Dougherty和Tim O’Reilly(Hayden Books,1987)或者是Mike Arst寫的教程——壓縮包的名稱是“U-SEDIT2.ZIP”(在許多站點上都找得到)。 要發掘sed
的潛力,則必須對“正則表達式”有足夠的理解。 正則表達式的資料可以看《Mastering Regular Expressions》作者Jeffrey Friedl(O’reilly 1997)。
Unix系統所提供的手冊頁(“man”)也會有所幫助(試一下這些命令“man sed”、“man regexp”,或者看“man ed”中關於正則表達式的部分),但手冊提供的信息比較“抽象”——這也是它一直為人所詬病的。 不過,它本來就不是用來教初學者如何使用sed或正則表達式的教材,而只是為那些熟悉這些工具的人提供的一些文本參考。
括號語法:前面的例子對sed命令基本上都使用單引號(’…’)而非雙引號(”…”)這是因為sed通常是在Unix平台上使用。 單引號下,Unix的shell(命令解釋器)不會對美元符($)和後引號(`…`)進行解釋和執行。 而在雙引號下美元符會被展開為變量或參數的值,後引號中的命令被執行並以輸出的結果代替後引號中的內容。 而在“csh”及其衍生的shell中使用感嘆號(!)時需要在其前面加上轉義用的反斜杠(就像這樣:\!)以保證上面所使用的例子能正常運行(包括使用單引號的情況下)。 DOS版本的Sed則一律使用雙引號(”…”)而不是引號來圈起命令。
‘\t’的用法:為了使本文保持行文簡潔,我們在腳本中使用’\t’來表示一個製表符。 但是現在大部分版本的sed還不能識別’\t’的簡寫方式,因此當在命令行中為腳本輸入製表符時,你應該直接按TAB鍵來輸入製表符而不是輸入’\t’ 。 下列的工具軟件都支持’\t’做為一個正則表達式的字元來表示製表符:awk、perl、HHsed、
sedmod以及GNU sed v3.02.80。
不同版本的SED:不同的版本間的sed會有些不同之處,可以想像它們之間在語法上會有差異。 具體而言,它們中大部分不支持在編輯命令中間使用標籤(:name)或分支命令(b,t),除非是放在那些的末尾。 這篇文檔中我們盡量選用了可移植性較高的語法,以使大多數版本的sed的用戶都能使用這些腳本。 不過GNU版本的sed允許使用更簡潔的語法。 想像一下當讀者看到一個很長的命令時的心情:
sed -e ‘/AAA/b’ -e ‘/BBB/b’ -e ‘/CCC/b’ -ed
好消息是GNU sed能讓命令更緊湊:
sed ‘/AAA/b;/BBB/b;/CCC/b;d’ #甚至可以寫成sed ‘/AAA\|BBB\|CCC/b;d’
此外,請注意雖然許多版本的sed接受象“/one/ s/RE1/RE2/”這種在’s’前帶有空格的命令,但這些版本中有些卻不接受這樣的命令:“/one /! s/RE1/RE2/”。 這時只需要把中間的空格去掉就行了。
速度優化:當由於某種原因(比如輸入文件較大、處理器或硬盤較慢等)需要提高命令執行速度時,可以考慮在替換命令(“s/…/…/”)前面加上地址表達式來提高速度。 舉例來說:
sed ’s/foo/bar/g’ filename #標準替換命令sed ‘/foo/ s/foo/bar/g’ filename #速度更快sed ‘/foo/ s//bar/g’ filename #簡寫形式當只需要顯示文件的前面的部分或需要刪除後面的內容時,可以在腳本中使用“q”
命令(退出命令)。 在處理大的文件時,這會節省大量時間。 因此:
sed -n ‘45,50p’ filename #顯示第45到50行sed -n ‘51q;45,50p’ filename #一樣,但快得多如果你有其他的單行腳本想與大家分享或者你發現了本文檔中錯誤的地方,請發電子郵件給本文檔的作者(Eric Pement)。 郵件中請記得提供你所使用的sed版本、
該sed所運行的操作系統及對問題的適當描述。 本文所指的單行腳本指命令行的長度在65個字符或65個以下的sed腳本〔譯註1〕。 本文檔的各種腳本是由以下所列作者所寫或提供:
Al Aab #建立了“seders”郵件列表Edgar Allen #許多方面Yiorgos Adamopoulos #許多方面Dale Dougherty # 《sed & awk》作者Carlos Duarte # 《do it with sed》作者Eric Pement #本文檔的作者Ken Pizzini # GNU sed v3.02的作者SG Ravenhall #去html標籤腳本Greg Ubben #有諸多貢獻並提供了許多幫助————————– ———————————————–
譯註1:大部分情況下,sed腳本無論多長都能寫成單行的形式(通過`-e’選項和`;’
號)——只要命令解釋器支持,所以這裡說的單行腳本除了能寫成一行還對長度有所限制。 因為這些單行腳本的意義不在於它們是以單行的形式出現。 而是讓用戶能方便地在命令行中使用這些緊湊的腳本才是其意義所在。
來源:http://sed.sourceforge.net/sed1line_zh-CN.html

轉載請註明文章轉載自:鄭氏網志


 


另外,有一個張學sed非常棒的概念圖:



O'Reilly Sed 第五章



kendoit 發表在 痞客邦 留言(0) 人氣()


PHP5 檔案上傳教學








1、  全局變量$_FILES[『xxx』];
    PHP5新創了一個$_$_FILES全局變量來接收文件的上傳。這和以往版本有些差別。在舊版本裡,你可以打開register_globals=on直接使用全局變量,或使用$HTTP_POST_FILSE[『xxx』],這裡只研究PHP5
2、文件上傳表單
    1,上傳文件的表單使用post方式(和get的區別不用說了);還要加上enctype=』multipart/form-data』。
    2,一般要加上隱藏域:
<input type=hidden name=』MAX_FILE_SIZE』 value=」30000」>,位置在file域前面。value的值是上傳文件的客戶端字節限制。據說可以減少文件超標時客戶端的等待時間,不過我沒覺得有什麼區別。
   注意:MAX_FILE_SIZE 的值只是對瀏覽器的一個建議,實際上它可以被簡單的繞過。因此不要把對瀏覽器的限制寄希望於該值。實際上,PHP.ini 設置中的上傳文件最大值,是不會失效的。但是最好還是在表單中加上 MAX_FILE_SIZE,因為它可以避免用戶在花時間等待上傳大文件之後才發現該文件太大了的麻煩。
    3,出於安全考慮,file域是不許賦值的。隨便在file域輸入字符串,然後按submit也不會有反應。必須是第二個字符是冒號的時候(比如空格跟隨冒號可以上傳一個長度為0字節的「文件」),submit才同意「服務」——不過這個是客戶端的措施,跟MAX_FILE_SIZE一樣很容易繞過去。
Page1.php:
<form enctype=」multipart/form-data」 action=」page2.php」 method=」POST」>
<input type=」hidden」 name=」MAX_FILE_SIZE」 value=」8388608〞>
上傳文件: <input name=」userfile」 type=」file」>
<input type=」submit」 value=」提交」>
</form>
3、上傳8M以下文件如何設置php.ini;
打開php.ini,首先找到
File Uploads區域,
有影響文件上傳的以下幾個參數:
file_uploads = on ;是否允許通過HTTP上傳文件的開關。默認為ON即是開
upload_tmp_dir ;文件上傳至服務器上存儲臨時文件的地方,如果沒指定就會用系統默認的臨時文件夾
upload_max_filesize = 8388608 ;望文生意,即允許上傳文件大小的最大值。默認為2M,必須換算成byte單位:1M=1024K;1K=1024byte
Data Handling ;區域,
還有一項:post_max_size = 8m ;指通過表單POST給PHP的所能接收的最大值,包括表單裡的所有值。默認為8M
一般地,設置好上述四個參數後,在網絡正常的情況下,上傳<=8M的文件是不成問題。
4、 上傳大於8M文件如何設置php.ini;
如果要上傳>8M的大體積文件,只設置上述四項還一定能行的通。除非你的網絡真有100M/S的上傳高速,否則你還得關心關心下面的參數:
Resource Limits
max_execution_time = 600 ;每個PHP頁面運行的最大時間值(秒),默認30秒
max_input_time = 600 ;每個PHP頁面接收數據所需的最大時間,默認60秒
memory_limit = 8m ;每個PHP頁面所吃掉的最大內存,默認8M
把上述參數修改後,在網絡所允許的正常情況下,就可以上傳大體積文件了。
好了,設置好現在就可以一試。點擊一個200大M的文件上傳一下,在你聽歌、想MM或上廁所回來過程中,程序會告訴你上傳成功啦~在本機上測試上傳200M的文件成功。
另外,據說上傳大文件最好用FTP方法,我對PHP的FTP不太熟,這裡就不研究了。
5、 文件上傳錯誤代碼
預定義變量$_FILES數組有5個內容:
    $_FILES[』userfile』][』name』]——客戶端機器文件的原名稱
    $_FILES[』userfile』][』type』]——文件的 MIME 類型
    $_FILES[』userfile』][’size』]——已上傳文件的大小,單位為字節
    $_FILES[』userfile』][』tmp_name』]——文件被上傳後在服務端儲存的臨時文件名
    $_FILES[』userfile』][』error』]——和該文件上傳相關的錯誤代碼
其中$_FILES[』userfile』][』error』]的可以有下列取值和意義:
    0——沒有錯誤發生,文件上傳成功。
    1——上傳的文件超過了 php.ini 中 upload_max_filesize 選項限制的值。
    2——上傳文件的大小超過了 HTML 表單中 MAX_FILE_SIZE 選項指定的值。
    3——文件只有部分被上傳。
    4——沒有文件被上傳。
1~3不用說了。「沒有文件被上傳」(4)是指表單的file域沒有內容,是空字符串。
    「文件上傳成功」(0)不一定真的有文件上傳了。比如你打了個「c:」給file域,就可以「上傳成功」——錯誤代碼是0,[』name』]是「c:」,[』type』]是「application/octet-stream」,[’size』]是0,[』tmp_name』]是「xxx.tmp」(xxx是服務器起的名字)
這裡我有個小發現,起初使用PHP5.14時,無論page1.php裡面<input name=」userfile」
type=」file」>的name等於什麼,在上傳處理腳本中都只能用$_FILES[』userfile』]來接收;
後來改用PHP5.16,發現$_FILES[』userfile』]必須和<input name=」userfile」 type=」file」>命名相對應了。比如name=」book」,則處理腳本必須用$_FILES[』book』]來接收。請大家注意一下自己的版本號。
6、上傳文件大小限制
    限制上傳文件大小的因素有
    1,客戶端限制:隱藏域MAX_FILE_SIZE的數值(可以被繞開)。
    2,服務器端限制:upload_max_filesize,post_max_size和memory_limit。這幾項不能夠用腳本來設置,也可以在php.ini裡設置,參考本文3、4條。
    3,自定義限制。
7、上傳文件格式檢驗
    1、檢驗文件格式的方法應該很多,可以檢測MIME類型,也可以用正則表達式判斷,這裡推
    薦一種我常用的:
        //自定義允許的文件上傳格式;
        $upload_type=」.jpeg,.png,.gif,.rar,.zip,.chm,.html,.htm」;
        //檢驗上傳文件是否符合格式的函數。
        function check_type($upload_type){
            $file_name=$_FILES[』$form』][』name』];
            $findtype=strtolower(strrchr($file_name,」.」));
            $allow=strpos($upload_type,$findtype);
            if($allow===false){
                echo」文件格式不符」;
                exit;
            }
        }
    2、  關於通過$_FILES[』userfile』][』type』]——文件MIME類型來檢查上傳格式,有必要對MIME進行一些討論。
   什麼是MIME?(不必深入瞭解,粗知大略即可)
    MIME表示多用途Internet郵件擴允協議。MIME擴允了基本的面向文本的Internet郵件系統,以便可以在消息中包含二進制附件
RFC822在消息體的內容中做了一點限制:就是只能使用簡單的ASCII文本。所以,MIME信息由正常的Internet文本郵件組成,文本郵件擁有一些特別的符合RFC822的信息頭和格式化過的信息體(用ASCII的子集來表示的附件)。這些MIME頭給出了一種在郵件中表示附件的特別的方法。
MIME信息包含了哪些東西?
一個普通的文本郵件的信息包含一個頭部分(To: From: Subject: 等等)和一個體部分(Hello Mr.,等等)。在一個符合MIME的信息中,郵件的各個部分叫做MIME段,每段前也綴以一個特別的頭。MIME郵件只是基於RFC 822郵件的一個擴展。然而它有著自已的RFC規範集。
頭字段
MIME頭根據在郵件包中的位置,大體上分為MIME信息頭和MIME段頭,MIME信息頭指整個郵件的頭,而MIME段頭只每個MIME段的頭。
MIME信息頭有:
MIME-Version:
這個頭提供了所用MIME的版本號。這個值習慣上為1.0。
Content-Type:
它定義了數據的類型,以便數據能被適當的處理。有效的類型有:text,image, audio,video,applications,multipart和message。注意任何一個二進制附件都應該被叫做application/octet-stream。這個頭的一些用例為:image/jpg, application/mswork,multipart/mixed 。
Content-Transfer-Encoding:
它說明了對數據所執行的編碼方式,客戶/MUA將用它對附件進行解碼。對於每個附件,可以使用7bit,8bit,binary ,quoted-printable,base64和custom中的一種編碼方式。7bit編碼是用在US ASCII字符集上的常用的一種編碼方式。8bit 和binary編碼一般不用。對可讀的標準文本,如果傳輸要經過對格式有影響的網關時對其進行保護,可以使用quoted printable 。Base64是一種通用方法,在需要決定使用哪一種編碼方法時,它提供了一個不用費腦子的選擇;它通常用在二進制,非文本數據上。注意,任何非7bit 數據必須用一種模式編碼,這樣它就可以通過Internet郵件網關。
Content-ID:
如果Content-Type是message/external-body或multipart/alternative時,這個頭就有用了。
Content-Descrīption:
這是一個可選的頭。它是任何信息段內容的自由文本描述。描述必須使用us-ascii碼。
Content-Disposition:
這是一個試驗性的頭,它用於給客戶程序/MUA提供提示,來決定是否在行內顯示附件或作為單獨的附件。
當然,在使用PHP檢查上傳格式時,沒有必要把MIME搞得那麼複雜,對那些高深的理論,粗知大略就可以了。倘若我們要上傳ZIP和RAR的文件,你可以在接收文件的php中寫上:
      $filetype=$_FILES[』userfile』][』type』];
     echo」$filetype」;
     就可看到上傳文件的mime類型.
     ZIP的MIME類型用application/x-zip-compressed
     RAR的MIME類型用application/octet-stream
然後再用如下代碼判斷格式:
switch ($_FILES[』userfile』][』type』]) {
case 「application/x-zip-compressed」:
break;
case 「application/octet-stream」:
break;
case 「text/plain」:
break;
default:
print 「您上傳的文件類型不對」;
exit(0);
break;
}
個人認為上傳文件最好的辦法使用一個功能齊全的類,自己寫的話太麻煩了。PHP的競爭對手ASP.NET都把文件上傳,廣告輪顯等功能做成組件了,可視化操作,瞧得讓人眼熱——當然,眼熱歸眼熱,我還是會極力克制自己不去學的。理由很簡單,無論是ASP.NET,PHP還是JSP,其作用都是做網站。既然作用都一樣,那麼好比殺豬,用剔骨尖刀是殺豬,用太極劍法是殺豬,即使你聰明英俊才華蓋世玉樹臨風,精通太極劍,剔骨刀,宰牛刀三種武藝來殺豬,其結果也只有一個——豬被殺死了;那麼,我寧肯只學一刀,只精通一刀,我也能把豬殺的很不錯。有那麼多時間、那麼多精力去重複學習一些作用相同的技術,倒不如學點別的,比如為人處事,經營管理,或者琢磨一下如何追MM,以解決程序員找對象老大難的問題等。
PHP對組件的支持非常不好,這是它的一個缺點。但傳說Zend公司許諾明年將發佈Zendbox,大力支持組件,也不知效果如何。Zend今年給我們太多的承諾了,說明年這也發佈那也發佈……強力期盼中……
8、開始上傳文件
//上接page1.php,這裡為了說明原理,省略了對上傳文件格式、大小的判斷。
Page2.php
<?php
// 在 4.1.0 以前的 PHP 中,需要用 $HTTP_POST_FILES 代替 $_FILES。
// 在 4.0.3 以前的 PHP 中,需要用 copy()來代替 move_uploaded_file()。
//上傳文件的路徑,這裡是基於linux的,如有需要請自行修改。
$uploaddir = 『/var/www/uploads/』;
$uploadfile = $uploaddir. $_FILES[』userfile』][』name』];
print 「<pre>」;
if (is_uploaded_file($_FILES[』userfile』])) {
if (move_uploaded_file($_FILES[』userfile』][』tmp_name』], $uploadfile)) {
    print 「文件上傳成功:\n」;
    print_r($_FILES);
} else {
    print 「文件上傳失敗:\n」;
    print_r($_FILES);
}
}
print 「</pre>」;
?>
is_uploaded_file():該函數用來判斷文件到底是客戶端上傳的呢還是本機原有的。傳說中國外有個軟件,它可以迷惑服務器,並使其誤把本機文件當成是客戶端上傳的。這就很危險了:如果在linux服務器下,不法分子把包含root密碼的敏感文件竊而走之,你的主機就馬上變肉雞,任人宰割了。
move_uploaded_file()把客戶端上傳的文件從臨時文件裡移走。和copy相比,該函數顯得安全多了。它只移走客戶端上傳的文件;至於移動本機文件,還是用copy吧.
9、下面演示一個簡單的文件上傳例子(20M—25M):
Php.ini設定:
post_max_size=23068672
file_uploads = On
upload_max_filesize=26214400
max_execution_time = 600
max_input_time = 600
memory_limit = 10M
設定完記得重啟apache或IIS。
Page1.php:
<form enctype=」multipart/form-data」 action=」page2.php」 method=」POST」>
<input type=」hidden」 name=」MAX_FILE_SIZE」 value=」8388608〞>
上傳文件: <input name=」myup」 type=」file」>
<input type=」submit」 value=」提交」>
</form>
Page2.php
<html>
<head>
<title>文件上傳</title>
</head>
<body>
9、下面演示一個簡單的文件上傳例子(20M—25M):
Php.ini設定:
post_max_size=23068672
file_uploads = On
upload_max_filesize=26214400
max_execution_time = 600
max_input_time = 600
memory_limit = 10M
設定完記得重啟apache或IIS。
Page1.php:
<form enctype=」multipart/form-data」 action=」page2.php」 method=」POST」>
<input type=」hidden」 name=」MAX_FILE_SIZE」 value=」8388608〞>
上傳文件: <input name=」myup」 type=」file」>
<input type=」submit」 value=」提交」>
</form>
Page2.php
<html>
<head>
<title>文件上傳</title>
</head>
<body>
<h1>文件上傳……</h1>
<?php
//判斷上傳錯誤;
if($_FILES[』myup』][』error』]>0){
   echo」上傳失敗:」;
   switch($_FILES[』myup』][』error』]){
//文件上傳錯誤代碼,具體原因參照本文第5條;
   case 1: echo」上傳失敗」;break;
   case 2: echo」上傳失敗」;break;
   case 3: echo」上傳失敗」;break;
   case 4: echo」上傳失敗」;break;
   }
}
/**********************************************************
記得在httpd.conf所指定的DocumentRoot目錄外新建一個upfile文件夾,
將之用來保存上傳的文件。之所以要把upfile放在DocumentRoot目錄外,是為了
防止客戶端上傳一些別有用心的PHP代碼來破壞站點,因為在DocumentRoot目錄外的
PHP代碼是無法執行的。在linux系統下,需確保upfile的權限為777。
***********************************************************/
$upfile=』../upfile/』.$_FILES[』myup』][』name』];
if(is_uploaded_file($_FILES[』myup』][』tmp_name』])){
     if(!move_uploaded_file($_FILES[』myup』][』tmp_name』],$upfile)){
     echo 「文件上傳失敗」;
     exit;
     }else{
     echo 「文件上傳成功!」;
     }
}
?>
</body>
</html>
10、一個簡單的文件上傳類:
這個類很簡單的,功能並不齊全;我另有一個功能強大的寶貝類,獨家收藏,絕不外傳…….呵呵,其實也是從phpchina找到的。本人學習文件上傳的方法就是:在phpchina搜索相關的帖子,全部保存下來,然後潛行研究,務求精熟,這樣你會發現很多書本上沒有的知識,如果不嫌我的辦法笨的話,phper朋友們可以試試。
     class upload{
          public $formname=」userfile」;//表單元素file的名字;
          public $upload_path=」upload/」;//上傳文件的保存路徑;
          public $upload_file_size=」10485760〞;//允許上傳文件的大小;
          public $upload_type=」.jpeg,.png,.gif,.rar,.zip,.chm,.html,.htm」;
         
          function __construct($formname1=」userfile」,$upload_file_size1=」10485760〞,$upload_path1=」upload/」,$upload_type1=」.jpeg,.png,.gif,.rar,.zip,.chm,.html,.htm」){
                $this->upload_false();
          }
          //少數瀏覽器支持PUT方法而不支持POST,可以據check_method()函數檢驗;
          function check_method(){
                 if($_SERVER[』REQUEST_METHOD』]!=』POST』){
                  echo」對不起,您的瀏覽器不支持POST方法上傳,如要繼續使用本站,請使用IE或Firefox瀏覽器!」;
                  exit;
            }
          }
          //檢查文件格式是否符合規定;
          function check_type($upload_type1){
                 $form=$this->formname;
            $file_name=$_FILES[』$form』][』name』];
            $findtype=strtolower(strrchr($file_name,」.」));
            $allow=strpos($upload_type,$findtype);
            if($allow===false){
                   echo」文件格式不符」;
                   exit;
            }
          }
          //檢驗是否從本地上傳文件;
          function startup(){
                 if(!is_uploaded_file($_FILES[$this->formname][』name』])){
                        echo 「不允許從服務器端向服務器端上傳文件!」;
                        exit;
                 }
                 $path=$this->upload_path;
                 $filename=$path.」/」.$_FILES[$this->formname][』name』];
                 if(!move_uploaded_file($_FILES[$this->formname][』tmp_name』],$filename)){
                        echo 「文件無法移動,上傳失敗!」;
                        exit;
                 }
                 echo 「文件上傳成功!」;
          }
          function upload_false(){
                 $the_error=$_FILES[$this->formname][』error』];
                 switch ($the_error){
                        case 0:echo 「文件上傳成功!」;break;
                        case 1:echo 「上傳文件的大小超出規定!」;break;
                        case 2:echo 「上傳文件的大小超過了MAX_FILE_SIZE的指定值!」;break;
                        case 3:echo 「文件只有部分被上傳!」;break;
                        case 4:echo 「文件沒有被上傳!」;break;
                 }
                 $this->startup();
                 $this->check_type();
                 $this->check_method();
          }
     }
Reference: http://www.juuyou.com/index.php?tag=upload

kendoit 發表在 痞客邦 留言(0) 人氣()


[轉貼] JQuery 批次上傳 Uploadify 詳解說明






以下資料只轉貼部分文章。
資料來源:http://blog.csdn.net/oec2003/archive/2010/01/06/5140732.aspx
Uploadify是JQuery的一個上傳插件,實現的效果非常不錯,帶進度顯示。不過官方提供的實例時php版本的,本文將詳細介紹Uploadify在Aspnet中的使用,您也可以點擊下面的鏈接進行演示或下載



uploader : uploadify.swf 文件的相對路徑,該swf文件是一個帶有文字BROWSE的按鈕,點擊後淡出打開文件對話框,默認值:uploadify.swf。
script : 後台處理程序的相對路徑。默認值:uploadify.php
checkScript :用來判斷上傳選擇的文件在服務器是否存在的後台處理程序的相對路徑
fileDataName :設置一個名字,在服務器處理程序中根據該名字來取上傳文件的數據。默認為Filedata
method : 提交方式Post 或Get 默認為Post
scriptAccess flash腳本文件的訪問模式,如果在本地測試設置為always,默認值:sameDomain
folder : 上傳文件存放的目錄 。
queueID : 文件隊列的ID,該ID與存放文件隊列的div的ID一致。
queueSizeLimit : 當允許多文件生成時,設置選擇文件的個數,默認值:999 。
multi : 設置為true時可以上傳多個文件。
auto : 設置為true當選擇文件後就直接上傳了,為false需要點擊上傳按鈕才上傳。
fileDesc : 這個屬性值必須設置fileExt屬性後才有效,用來設置選擇文件對話框中的提示文本,如設置fileDesc為“請選擇rar doc pdf文件”。
fileExt : 設置可以選擇的文件的類型,格式如:'*.doc;*.pdf;*.rar' 。
sizeLimit : 上傳文件的大小限制 。
simUploadLimit : 允許同時上傳的個數默認值:1 。
buttonText : 瀏覽按鈕的文本,默認值:BROWSE 。
buttonImg : 瀏覽按鈕的圖片的路徑 。
hideButton : 設置為true則隱藏瀏覽按鈕的圖片。
rollover : 值為true和false,設置為true時當鼠標移到瀏覽按鈕上時有反轉效果。
width : 設置瀏覽按鈕的寬度,默認值:110。
height : 設置瀏覽按鈕的高度,默認值:30。
wmode : 設置該項為transparent 可以使瀏覽按鈕的flash背景文件透明,並且flash文件會被置為頁面的最高層。默認值:opaque 。
cancelImg :選擇文件到文件隊列中後的每一個文件上的關閉按鈕圖標。
上面介紹的key值的value都為字符串或是布爾類型,比較簡單,接下來要介紹的key值的value為一個函數,可以在選擇文件、出錯或其他一些操作的時候返回一些信息給用戶。
onInit : 做一些初始化的工作。
onSelect :選擇文件時觸發,該函數有三個參數
    * event:事件對象。
    * queueID:文件的唯一標識,由6為隨機字符組成。
    * fileObj:選擇的文件對象,有name、size、creationDate、modificationDate、type 5個屬性。
代碼如下:


  1. $(document).ready(function()

  2. {

  3.     $("#uploadify").uploadify({

  4.         'uploader': 'JS/jquery.uploadify-v2.1.0/uploadify.swf',

  5.         'script': 'UploadHandler.ashx',

  6.         'cancelImg': 'JS/jquery.uploadify-v2.1.0/cancel.png',

  7.         'folder': 'UploadFile',

  8.         'queueID': 'fileQueue',

  9.         'auto': false,

  10.         'multi': true,

  11.         'onInit':function(){alert("1");},

  12.         'onSelect': function(e, queueId, fileObj)

  13.         {

  14.             alert("唯一標識:" + queueId + "\r\n" +

  15.                   "文件名:" + fileObj.name + "\r\n" +

  16.                   "文件大小:" + fileObj.size + "\r\n" +

  17.                   "創建時間:" + fileObj.creationDate + "\r\n" +

  18.                   "最後修改時間:" + fileObj.modificationDate + "\r\n" +

  19.                   "文件類型:" + fileObj.type

  20.             );

  21.         }

  22.     });

  23. });


複製代碼

onSelectOnce :在單文件或多文件上傳時,選擇文件時觸發。該函數有兩個參數event,data,data對像有以下幾個屬性:
    * fileCount:選擇文件的總數。
    * filesSelected:同時選擇文件的個數,如果一次選擇了3個文件該屬性值為3。
    * filesReplaced:如果文件隊列中已經存在A和B兩個文件,再次選擇文件時又選擇了A和B,該屬性值為2。
    * allBytesTotal:所有選擇的文件的總大小。
onCancel : 當點擊文件隊列中文件的關閉按鈕或點擊取消上傳時觸發。該函數有event、queueId、fileObj、data四個參數,前三個參數同onSelect 中的三個參數,data對像有兩個屬性fileCount和allBytesTotal。
    * fileCount:取消一個文件後,文件隊列中剩余文件的個數。
    * allBytesTotal:取消一個文件後,文件隊列中剩余文件的大小。
onClearQueue :當調用函數fileUploadClearQueue時觸發。有event和data兩個參數,同onCancel 中的兩個對應參數。
onQueueFull :當設置了queueSizeLimit並且選擇的文件個數超出了queueSizeLimit的值時觸發。該函數有兩個參數event和queueSizeLimit。
onError :當上傳過程中發生錯誤時觸發。該函數有event、queueId、fileObj、errorObj四個參數,其中前三個參數同上,errorObj對像有type和info兩個屬性。
    * type:錯誤的類型,有三種'HTTP', 'IO', or 'Security'
    * info:錯誤的描述
onOpen :點擊上傳時觸發,如果auto設置為true則是選擇文件時觸發,如果有多個文件上傳則遍歷整個文件隊列。該函數有event、queueId、fileObj三個參數,參數的解釋同上。
onProgress :點擊上傳時觸發,如果auto設置為true則是選擇文件時觸發,如果有多個文件上傳則遍歷整個文件隊列,在onOpen之後觸發。該函數有event、queueId、fileObj、data四個參數,前三個參數的解釋同上。 data對像有四個屬性percentage、 bytesLoaded、allBytesLoaded、speed:
    * percentage:當前完成的百分比
    * bytesLoaded:當前上傳的大小
    * allBytesLoaded:文件隊列中已經上傳完的大小
    * speed:上傳速率 kb/s
onComplete:文件上傳完成後觸發。該函數有四個參數event、queueId、fileObj、response、data五個參數,前三個參數同上。 response為後台處理程序返回的值,在上面的例子中為1或0,data有兩個屬性fileCount和speed
    * fileCount:剩餘沒有上傳完成的文件的個數。
    * speed:文件上傳的平均速率 kb/s
onAllComplete:文件隊列中所有的文件上傳完成後觸發。該函數有event和data兩個參數,data有四個屬性,分別為:
    * filesUploaded :上傳的所有文件個數。
    * errors :出現錯誤的個數。
    * allBytesLoaded :所有上傳文件的總大小。
    * speed :平均上傳速率 kb/s
相關函數介紹
在上面的例子中已經用了uploadifyUpload和uploadifyClearQueue兩個函數,除此之外還有幾個函數:
uploadifySettings:可以動態修改上面介紹的那些key值,如下面代碼
$('#uploadify').uploadifySettings('folder','JS');
如果上傳按鈕的事件寫成下面這樣,文件將會上傳到uploadifySettings定義的目錄中
<a href="javascript: $('#uploadify').uploadifySettings('folder','JS');
$('#uploadify').uploadifyUpload()">上傳</a>
uploadifyCancel:該函數接受一個queueID作為參數,可以取消文件隊列中指定queueID的文件。
$('#uploadify').uploadifyCancel(id);





kendoit 發表在 痞客邦 留言(0) 人氣()

這檔股票可以加進清單中
股性活潑
逢低買進

kendoit 發表在 痞客邦 留言(0) 人氣()


http://dev.mysql.com/tech-resources/articles/hierarchical-data.html

kendoit 發表在 痞客邦 留言(0) 人氣()

平均買進的成本:9.2
買進股數:10000
減資後股數:8000
減資的基本教學

kendoit 發表在 痞客邦 留言(0) 人氣()

從table1建立table2的方法:
select * from table1 into table2
create table2 select * from table1

kendoit 發表在 痞客邦 留言(0) 人氣()

Blog Stats
⚠️

成人內容提醒

本部落格內容僅限年滿十八歲者瀏覽。
若您未滿十八歲,請立即離開。

已滿十八歲者,亦請勿將內容提供給未成年人士。