當前位置:才華齋>計算機>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)

{