當前位置:才華齋>計算機>php語言>

php文件上傳後端處理方法

php語言 閲讀(2.14W)

詳細介紹了php文件上傳後端處理小技巧,幫助大家更好的進行文件上傳操作,感興趣的朋友可以參考一下。

php文件上傳後端處理方法

業務場景一、我們只會選擇一個單個的文件上傳,而且不需要做一些即時的驗證工作。那麼,也許並沒有什麼優化可言了,因為,最後你要做的,只是將這個文件放在表單裏最後一起提交,直接處理即可!

業務場景二、需要上傳多個文件,而且需要時時驗證文件內部內容,並時行相應頁面顯示。對於這種況,在用户選擇了上傳文件之後,我們需要立即將文件上傳,因為我們需要讀取文件裏的信息,在最後提交的時候,我們也需要提交一次文件。很明顯,在這裏是存在一個重複上傳的.工作的,一個耗費用户時間,二個是耗費服務器帶寬資源!優化,能夠想得到的方法也很簡單,能不能在第一次上傳完文件之後,就將文件保留在服務器,真正提交表單的時候,去讀取這個已經被上傳的臨時文件即可。是的,這就是我們的處理思路!

業務場景三、與場景二類似,需要上傳多個文件,但是多個文件可能是分開上傳的。即我們可能第一次上傳了10M,第二次上傳了10M,總共上傳了10次,那麼,在服務器端來説的話,一次性提交肯定是超出了上傳大小的限制了,但是如果,我們是分每一次的上傳,這是可以的,而最後提交的時候,我們只需要將簡短的文本信息傳上去即可!

思路的確是簡單的,看起來,也是沒什麼問題,但是,也許我是能力有限,當時着實花了我不少時間去處理這個什麼鬼!下面,我將給出一些示例代碼,以供參考:

文件上傳技巧(將單次上傳的文件作為臨時文件存在在服務器端)示例代碼:

  1. 頁面js處理

//點擊選擇完成文件後,觸發上傳文件操作,將文件上傳至服務器臨時目錄

$('ad-real-file')()('change', function(){

if(!$(this)()){

return false;

}

var responseObjId = $(this)('response-id');

var responseObj = $('#' + responseObjId);

$('#Form')Submit({

url:'/aa/bb/uploadTmpApkTool',

resetForm: false,

dataType: 'json',

beforeSubmit: function(option){

ing = (2);

},

success: function(data, statusText){

e(ing);

if(us == 1){

(nfoHtml);

var parentContainer = nt()nt(),

nameContainer = ('-name-container');

(ame);

('title', ame);

('-tmp')(Info); //將文件信息存放於隱藏域中,以便在提交時能找到

$(submitId)veAttr('disabled');

}else{

t();

}

},

error: function(data){

e(ing);

t('未知錯誤,請稍後再試!');

}

});

return false;//防止dialog 自動關閉

});

2. 很明顯,頁面裏面需要獲取文件信息,後台處理代碼(PHP)

$apkConfig = $this->_getApkConfig();

$params = $this->getFilteredParam('get');

$subFile = $_FILES['apkToolFiles'];

$apkName = $apkInfoHtml = "";

if(empty($subFile))

{

$this->ajaxReturn(array('status' => -4, 'info' => '請選擇要上傳的文件'));

}

foreach ($subFile['name'] as $subKey => $subVal)

{