php文件上傳后端處理方法_第1頁
php文件上傳后端處理方法_第2頁
php文件上傳后端處理方法_第3頁
php文件上傳后端處理方法_第4頁
php文件上傳后端處理方法_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

本文格式為Word版,下載可任意編輯——php文件上傳后端處理方法php文件上傳后端處理方法

細致介紹了php文件上傳后端處理小技巧,扶助大家更好的舉行文件上傳操作,感興趣的摯友可以參考一下。

業(yè)務場景一、我們只會選擇一個單個的文件上傳,而且不需要做一些即時的驗證工作。那么,可能并沒有什么優(yōu)化可言了,由于,結果你要做的,只是將這個文件放在表單里結果一起提交,直接處理即可!

業(yè)務場景二、需要上傳多個文件,而且需要時時驗證文件內(nèi)部內(nèi)容,并時行相應頁面顯示。對于這種況,在用戶選擇了上傳文件之后,我們需要立刻將文件上傳,由于我們需要讀取文件里的信息,在結果提交的時候,我們也需要提交一次文件。很明顯,在這里是存在一個重復上傳的.工作的,一個花費用戶時間,二個是花費服務器帶寬資源!優(yōu)化,能夠想得到的方法也很簡樸,能不能在第一次上傳完文件之后,就將文件留存在服務器,真正提交表單的時候,去讀取這個已經(jīng)被上傳的臨時文件即可。是的,這就是我們的處理思路!

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

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

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

1.頁面js處理

//點擊選擇完成文件后,觸發(fā)上傳文件操作,將文件上傳至服務器臨時目次

$.upload-real-file.off.onchange,function

if!$this.val

returnfalse;

varresponseObjId=$this.attrresponse-id;

varresponseObj=$#+responseObjId;

$#Form.ajaxSubmit

url:/aa/bb/uploadTmpApkTool,

resetForm:false,

dataType:json,

beforeSubmit:functionoption

window.loading=layer.load2;

,

success:functiondata,statusText

layer.closewindow.loading;

ifdata.status==1

responseObj.htmldata.apkInfoHtml;

varparentContainer=responseObj.parent.parent,

nameContainer=parentContainer.find.file-name-container;

nameContainer.htmldata.apkName;

nameContainer.attrtitle,data.apkName;

responseObj.find.file-tmp.htmldata.fileInfo;//將文件信息存放于暗藏域中,以便在提交時能找到

$submitId.removeAttrdisabled;

else

;

,

error:functiondata

layer.closewindow.loading;

layer.alert未知錯誤,請稍后再試!;

;

returnfalse;//防止dialog自動關閉

;

2.很明顯,頁面里面需要獲取文件信息,后臺處理代碼(PHP)

$apkConfig=$this-_getApkConfig;

$params=$this-getFilteredParamget;

$subFile=$_FILES[apkToolFiles];

$apkName=$apkInfoHtml=;

ifempty$subFile

$this-ajaxReturnarraystatus=-4,info=請選擇要上傳的文件;

foreach$subFile[name]as$subKey=$subVal

php文件上傳后端處理方法

if$subFile[name][$subKey]

$fileData=$this-_getFileData$subFile,$subKey;

$checkData=array

maxSize=$apkConfig[FILE_MAX_SIZE],

savePath=$apkConfig[TMP_CHILD_PATH],

extArr=arrayapk,

releaseName=str_replace.apk,,$fileData[fileName],//特有

;

$checkResult=$this-_checkFileData$fileData,$checkData;

if$checkResult[status]!=1

$this-ajaxReturn$checkResult;

//移動文件

$filePath=$checkData[savePath]./.$fileData[fileName]..tmp.genRandStr6;;

$this-_moveUploadedFile$fileData[tmpName],$filePath;

$apkInfo=$this-_apkParser$filePath;//解析

if$apkInfo[UMENG_CHANNEL]!=UMENG_CHANNEL_VALUE

@unlink$filePath;//刪除無效文件

$this-ajaxReturnarraystatus=0,info=UMENG_CHANNEL的值要是UMENG_CHANNEL_VALUE才行;

$tmpFileArr[file_info]=array

name=$subFile[name][$subKey],

type=$subFile[type][$subKey],

tmp_name=str_replace$apkConfig[TMP_CHILD_PATH]./,,$filePath,

error=$subFile[error][$subKey],

size=$subFile[size][$subKey],

;//轉存該值,不再重復上傳文件

else

$this-ajaxReturnarraystatus=0,info=文件不能為空;

foreach$apkInfoas$key=$val

$apkInfoHtml.=$key:$val\r\n;

$apkName=$fileData[fileName];

$version=$apkInfo[versionName];

$fileInfo=htmlspecialcharsjson_encode$tmpFileArr[file_info];

$fileInfoHtml=inputname=\apkToolFileTmp[]\value=$fileInfotype=\hidden\/;//確定要輸出前使用htmlspecialchars,否那么不能正確顯示頁面值和獲取至正確的文件信息

$this-ajaxReturnarraystatus=1,info=上傳告成,version=$version,item=$item,apkName=$apkName,apkInfoHtml=$apkInfoHtml,fileInfo=$fileInfoHtml;

3.通過以兩片面代碼的合作,我們在頁面上已經(jīng)有正確的信息了,只需要在結果提交表單的時候,不要將文件提交到服務器,在服務器端處理時,只需將之前上傳的臨時文件移動一下位置即可,這樣就算大功告成了!

$.upload-file-real.attrdisabled,disabled;//提交表單前,禁用上傳文件

4.后續(xù)工作

將臨時文件上傳到服務器后,是沒手段判斷用戶是否取消當前操作的,假設取消了,那么臨時文件將一向存

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論