日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

php文件上傳小技巧與后端處理

瀏覽:187日期:2022-09-11 15:52:29

引語:在上一篇文章中說到,在頁面中可以用隱藏的方式讓你的上傳頁面看起來漂亮。但是這對于性能來說,并沒有什么卵用,那么在后臺的處理中,難道就沒有一些處理技巧么?所謂后臺的技巧,應該要包括上傳得快一點,上傳的文件大一點!那么,本文就來說說,后端處理都有些什么技巧吧!

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

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

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

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

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

1. 頁面js處理

//點擊選擇完成文件后,觸發上傳文件操作,將文件上傳至服務器臨時目錄 $(’.upload-real-file’).off().on(’change’, function(){ if(!$(this).val()){ return false; } var responseObjId = $(this).attr(’response-id’); var responseObj = $(’#’ + responseObjId); $(’#Form’).ajaxSubmit({url:’/aa/bb/uploadTmpApkTool’,resetForm: false,dataType: ’json’,beforeSubmit: function(option){ window.loading = layer.load(2);},success: function(data, statusText){ layer.close(window.loading); if(data.status == 1){responseObj.html(data.apkInfoHtml); var parentContainer = responseObj.parent().parent(), nameContainer = parentContainer.find(’.file-name-container’);nameContainer.html(data.apkName);nameContainer.attr(’title’, data.apkName);responseObj.find(’.file-tmp’).html(data.fileInfo); //將文件信息存放于隱藏域中,以便在提交時能找到 $(submitId).removeAttr(’disabled’); }else{layer.alert(data.info); }},error: function(data){ layer.close(window.loading); layer.alert(’未知錯誤,請稍后再試!’);} }); 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){ if ($subFile[’name’][$subKey]) {$fileData = $this->_getFileData($subFile, $subKey);$checkData = array( ’maxSize’ => $apkConfig[’FILE_MAX_SIZE’], ’savePath’ => $apkConfig[’TMP_CHILD_PATH’], ’extArr’ => array(’apk’), ’releaseName’ => str_replace(’.apk’, ’’, $fileData[’fileName’]), //特有 );$checkResult = $this->_checkFileData($fileData, $checkData); if ($checkResult[’status’] != 1){ $this->ajaxReturn($checkResult);} //移動文件 $filePath = $checkData[’savePath’] . ’/’ . $fileData[’fileName’] . ’.tmp’ . genRandStr(6);;$this->_moveUploadedFile($fileData[’tmpName’], $filePath);$apkInfo = $this->_apkParser($filePath); //解析 if($apkInfo[’UMENG_CHANNEL’] != ’UMENG_CHANNEL_VALUE’){ @unlink($filePath); //刪除無效文件 $this->ajaxReturn(array(’status’ => 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->ajaxReturn(array(’status’ => 0, ’info’ => '文件不能為空')); } foreach ($apkInfo as $key => $val) {$apkInfoHtml .= '{$key}:{$val} rn'; } $apkName = $fileData[’fileName’]; $version = $apkInfo[’versionName’];}$fileInfo = htmlspecialchars(json_encode($tmpFileArr[’file_info’]));$fileInfoHtml = '<input name='apkToolFileTmp[]' value=’{$fileInfo}’ type='hidden'/>'; //一定要輸出前使用htmlspecialchars, 否則不能正確顯示頁面值和獲取至正確的文件信息 $this->ajaxReturn(array(’status’ => 1, ’info’ => '上傳成功', ’version’ => $version, ’item’ => $item, ’apkName’ => $apkName, ’apkInfoHtml’ => $apkInfoHtml, ’fileInfo’ => $fileInfoHtml)); }

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

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

4. 后續工作

將臨時文件上傳到服務器后,是沒辦法判斷用戶是否取消當前操作的,如果取消了,則臨時文件將一直存在于服務器,所以,我們需要一個定時清理臨時目錄的腳本。當然,這個很簡單,就只需要找到這個目錄,比較一下時間,比如超過一天前的文件就給刪除。注意控制清理頻率即可!

5. 題外話

日志真的很重要,哪里出錯了,哪里刪除文件了,哪里清理數據庫了,一定要做好記錄,否則,到時查找原因時,到哪里去喊救命!

上傳文件到服務器臨時目錄,后端處理原理看起來很簡單,但是也需要你仔細調試,至少當初我在做這個小功能時,著實費了不少勁才縷清楚的!

標簽: PHP
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲美洲欧洲综合国产一区| 偷拍亚洲精品| 国产精品九九| 日韩精品免费视频一区二区三区| 亚洲精品88| 久久免费视频66| 国产亚洲电影| 国产日韩欧美三级| 日韩精品一区二区三区av| 蜜臀国产一区二区三区在线播放 | 欧美精品高清| 人在线成免费视频| 欧美一级鲁丝片| 久久电影tv| 日韩激情一区| 日韩精品免费一区二区三区| 岛国av在线网站| 精品日产乱码久久久久久仙踪林| 国产精品a级| 毛片不卡一区二区| 福利视频一区| 肉色欧美久久久久久久免费看| 韩国三级一区| 亚洲精品2区| 美女精品在线观看| 日韩精品视频网| 91亚洲无吗| 久久中文字幕导航| 亚洲国产成人二区| 久久久久久久久99精品大| 黄色成人在线网址| 亚洲三级网站| 日韩精品高清不卡| 欧美a级一区二区| 久久久久久婷| 欧美 日韩 国产一区二区在线视频 | 中文字幕一区日韩精品| 亚洲一区日韩在线| 日韩精品乱码av一区二区| 国产精品亚洲综合在线观看| 国产精品视频一区视频二区| 久久久国产精品网站| 麻豆理论在线观看| 亚洲国产成人精品女人| 亚洲香蕉视频| 久久超碰99| 91精品综合| 免费成人av在线播放| 国产精品探花在线观看| 老牛国内精品亚洲成av人片| 欧美丝袜一区| 中文视频一区| 成人午夜网址| 一本色道精品久久一区二区三区| 日韩精品欧美成人高清一区二区| 国产精品极品| 久久久9色精品国产一区二区三区| 久久国产精品99国产| 国产精品一区免费在线| 国产 日韩 欧美一区| 亚州av一区| 亚洲一级少妇| 日韩精品欧美大片| 精品亚洲美女网站| 日韩av资源网| 99久久夜色精品国产亚洲狼| 欧美在线不卡| 免费久久精品| 久久精品免费看| 日韩在线一二三区| 久久亚洲国产精品尤物| 丝袜亚洲另类欧美| 天堂√中文最新版在线| 日韩精品一区二区三区免费视频| 亚洲v在线看| 国产精品免费99久久久| 亚洲黄色影院| 日本久久黄色| 欧美有码在线| 男人的天堂久久精品| 日本久久成人网| 国产高清亚洲| 日韩欧美久久| 亚洲一区国产| 欧美不卡高清一区二区三区| 日本91福利区| 首页国产欧美久久| 日韩在线短视频| 日本在线不卡视频一二三区| 成人精品天堂一区二区三区| 国产极品一区| 老鸭窝亚洲一区二区三区| 日韩欧美一区免费| 日韩和欧美的一区| 久久久久久美女精品| 国产视频亚洲| 日韩三区免费| 国产精品a级| 久久高清免费观看| 精品三区视频| 日韩午夜黄色| 精品一区二区三区中文字幕视频 | 国产一区二区三区自拍| 久久国产欧美日韩精品| japanese国产精品| 国产精品白丝一区二区三区| 国产一区二区三区免费在线| 欧美日韩一区二区三区四区在线观看 | 麻豆精品在线| 久久成人国产| 黄色成人精品网站| a天堂资源在线| 日韩av影院| 影音国产精品| 日韩欧美1区| 久久中文欧美| 91精品视频一区二区| 四虎4545www国产精品 | 99在线观看免费视频精品观看| 国产精品欧美一区二区三区不卡| 91精品一区国产高清在线gif| 国产免费久久| 亚洲精选久久| 亚洲在线观看| 久久久久久久久久久9不雅视频| 国产精品视频一区二区三区 | 精品美女久久| 国产另类在线| 日韩高清在线不卡| 亚洲欧美高清| 一区在线视频观看| 精品中文在线| 成人精品国产亚洲| 免费看久久久| 青青草国产精品亚洲专区无| 午夜在线视频一区二区区别| 一区二区三区四区在线看| 成人污污视频| 久久在线91| 久久伊人国产| 国产日韩欧美一区二区三区在线观看 | 国产极品久久久久久久久波多结野 | www在线观看黄色| 国产精品欧美日韩一区| 蜜桃视频一区二区| 樱桃成人精品视频在线播放| 久久久精品网| 久久狠狠婷婷| 久久久久一区| 一本大道色婷婷在线| 久久中文字幕av一区二区不卡| 国产日本亚洲| 国产免费av一区二区三区| 日本午夜精品视频在线观看| 中文字幕av亚洲精品一部二部| 乱人伦精品视频在线观看| 尤物精品在线| 免费久久99精品国产| 国产农村妇女精品一区二区 | 日本不卡视频在线观看 | 男女男精品视频网| 久久夜色精品| 亚洲另类视频| 国产福利资源一区| 精品一区av| 黑森林国产精品av| 四虎成人av| 国产精品99视频| 九九精品调教| 欧美日韩国产综合网| 欧美日韩一二| 日韩午夜免费| 免费在线观看不卡| 久久精品99国产精品日本| 麻豆精品视频在线| 正在播放日韩精品| 精品日韩视频| 国产亚洲欧洲| 日本一不卡视频| 国产亚洲一区二区三区不卡| 国产精品午夜一区二区三区| 久久精品欧洲| 日本精品黄色| 一区二区三区四区日韩| 日本a级不卡| 国产精品videossex| 国产成人精品一区二区三区免费 | 水野朝阳av一区二区三区| 日韩三级精品| 麻豆视频观看网址久久| 婷婷综合六月| 日韩在线一二三区| 国产精品17p| 久久精品国内一区二区三区水蜜桃| 高清不卡亚洲| 免费日韩av片| 麻豆国产精品| 久久国产电影| 亚洲精品乱码| 免费一级欧美片在线观看网站 |