swfupload是一個用來文件上傳的組件,對于大文件我們覺得是很不錯的,下面我來介紹swfupload配置與使用方法吧.
swfupload對于大文件上傳等比較好用,下面以classic form demo為例,簡單說明下用法.
下載地址:http://code.google.com/p/swfupload/downloads/list
其中 SWFUpload_v250_beta_3_samples.zip 為實例代碼,解壓后重命名為swfupload,保存到本地主文件夾(nginx+php環(huán)境)下,便可以通過.
http://localhost/swfupload/demos/ 訪問其中兩個文件夾,demos 為客戶端的實例,samples 提供了各語言的文件保存代碼,切換到 http://localhost/swfupload/demos/formsdemo/ 即普通表單模式,在/demos/formsdemo/下新建文件夾 uploads,將 /smaples/php/upload.php 中的代碼拷貝到 /demos/formsdemo/upload.php 開頭,即
// The Demos don't save files
這個注釋下面,修改其中的代碼:
view sourceprint?$upload_name = "filedata"; 為:
view sourceprint?$upload_name = "resume_file";
與/demos/formsdemo/index.php中的表單元素名稱一致
此時,可以使用表單正常上傳文件,上傳的文件保存在/demos/formsdemo/uploads/目錄下數(shù)據(jù)庫處理部分,應(yīng)修改下面的代碼:
- if (isset($_FILES["resume_file"]) && is_uploaded_file($_FILES["resume_file"]["tmp_name"]) && $_FILES["resume_file"]["error"] == 0) {
- //開源代碼Vevb.com
- echo rand(1000000, 9999999); // Create a pretend file id, this might have come from a database.
- }
這段代碼是原來demo中的upload,其作用時返回一個已經(jīng)上傳的文件的id并賦給表單的hidFileID標簽(注意到,這個標簽是一個hidden元素).
原demo是隨機產(chǎn)生的一個數(shù),在這要修改為數(shù)據(jù)庫插入操作得到的一個數(shù)據(jù)庫表的id值,即下面的做法:
去掉對$_FILES的if判斷(這在上面的move_uploaded_file之后is_uploaded_file判斷為false);進行數(shù)據(jù)庫插入操作;直接echo得到的id(數(shù)字型),對于大文件上傳,需要首先修改表單部分的,代碼如下:
/demos/formsdemo/index.php中
file_size_limit : "100 MB".
修改為期待的尺寸(最大2G),修改nginx.conf,/etc/init.d/nginx reload,若不添加下面的設(shè)置,則nginx會出現(xiàn)413 Request Entity Too Large錯誤,代碼如下:
- http {
- ...
- client_max_body_size 128M
- ...
- }
同時需要修改服務(wù)器配置 php.ini,/etc/init.d/php-cgi reload,代碼如下:
- upload_max_filesize 100M
- post_max_size 100M
- memory_limit 128M
注意到swfupload并不要求修改max_execution_time和max_input_time的配置.
新聞熱點
疑難解答