成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

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

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

瀏覽:148日期: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
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
免费亚洲电影| 亚洲精品一区二区三区99| 欧美日韩国产精选| 亚洲国产日韩在线一区模特| 国模一区二区三区| 国产调教视频一区| 99热99精品| 精品国产百合女同互慰| 成人avav影音| 精品粉嫩超白一线天av| www.色精品| 久久久久久9999| 91麻豆国产精品久久| 久久久国际精品| 国产盗摄一区二区| 在线不卡欧美精品一区二区三区| 免费观看30秒视频久久| 久久久综合网| 天天av天天翘天天综合网| 99精品国产在热久久| 国产精品国产三级国产aⅴ入口| 欧美大香线蕉线伊人久久国产精品| 国产欧美一区在线| 精品不卡一区二区三区| 日韩一区在线播放| 亚洲视频福利| 亚洲激情图片小说视频| 国产欧美日韩综合一区在线播放| 亚洲综合丁香婷婷六月香| 国产亚洲欧美另类一区二区三区| 一区二区三区日韩精品视频| 性色av一区二区怡红| 日韩高清在线一区| 在线观看91视频| 国产一区欧美日韩| 欧美videofree性高清杂交| 国产99一区视频免费 | 日本一区二区三区久久久久久久久不 | 欧美亚洲三级| 午夜精品久久久久久久久久久| 一本久久a久久免费精品不卡| 青椒成人免费视频| 欧美日韩一区 二区 三区 久久精品| 国产一区二区看久久| 亚洲精品在线电影| 欧美午夜不卡| 亚洲国产视频a| 欧美在线观看视频一区二区| 国产成人aaaa| 中文字幕精品一区二区精品绿巨人 | av电影在线不卡| 中文字幕精品三区| 香蕉亚洲视频| 国产精品一区二区不卡| 久久欧美一区二区| 一本色道久久综合亚洲二区三区| 亚洲国产中文字幕在线视频综合 | 91精品一区二区三区久久久久久 | 黄色资源网久久资源365| 精品少妇一区二区三区 | 久久99热国产| wwwwxxxxx欧美| 一区精品久久| 日韩和欧美一区二区三区| 91精品国产综合久久久久久漫画 | 国产伦理一区| 国产在线国偷精品免费看| 国产欧美日韩三级| 亚洲在线观看| 国产精品18久久久| 中文字幕一区三区| 欧美特级限制片免费在线观看| 99精品视频一区| 亚洲午夜一区二区三区| 欧美人牲a欧美精品| 欧美精选在线| 日本不卡一区二区| 久久综合久久鬼色| 亚洲欧美国产不卡| 不卡区在线中文字幕| 亚洲一区二区三区在线播放| 这里只有精品视频在线观看| 精品电影一区| 九九精品视频在线看| 国产精品三级电影| 欧美亚一区二区| 午夜精品偷拍| 久久精品国产久精国产| 国产精品丝袜91| 欧美精品视频www在线观看| 午夜精品一区二区三区四区| 日本在线观看不卡视频| 国产蜜臀97一区二区三区| 色哟哟日韩精品| 欧美人成在线| 精品一区二区三区在线观看| 国产精品久久久久影院老司| 3atv一区二区三区| 免费一区视频| 99精品热视频| 蜜桃av一区二区在线观看| 日本一区二区动态图| 欧美日韩一区二区在线观看视频| 亚洲小说欧美另类社区| 久草热8精品视频在线观看| 国产亚洲欧洲一区高清在线观看| 久久综合狠狠| 国产精品igao视频网网址不卡日韩| 久久99这里只有精品| 亚洲免费伊人电影| 欧美www视频| 欧洲人成人精品| 亚洲手机在线| 成人污视频在线观看| 日韩高清一级片| 国产精品区一区二区三区| 欧美日韩精品欧美日韩精品一综合| 亚洲国产免费看| 成人a级免费电影| 日本欧美加勒比视频| 国产精品色婷婷久久58| 91精品国产综合久久精品app| 亚洲欧美视频| 欧美视频不卡| 大陆成人av片| 久久精品免费观看| 亚洲综合999| 国产精品久久久久久久蜜臀| 精品国产制服丝袜高跟| 欧美日韩另类国产亚洲欧美一级| av成人国产| 欧美日韩国产精品一卡| 国产成人免费视| 久久国产婷婷国产香蕉| 亚洲一二三四在线| 国产精品久久综合| 精品国产第一区二区三区观看体验| 欧美日免费三级在线| 国产农村妇女精品一二区| 国内自拍一区| 91偷拍与自偷拍精品| 国产成人精品亚洲午夜麻豆| 极品少妇xxxx偷拍精品少妇| 蜜臀精品久久久久久蜜臀| 亚洲成人第一页| 亚洲男人的天堂在线aⅴ视频| 久久精品网站免费观看| 日韩欧美三级在线| 欧美日韩一级片在线观看| 久久亚洲风情| 亚洲精品乱码| 极品尤物久久久av免费看| 欧美一区国产在线| 高清在线观看日韩| 狠狠色狠狠色合久久伊人| 美腿丝袜一区二区三区| 亚洲v中文字幕| 亚洲国产成人91porn| 一区二区三区在线视频免费| 最新高清无码专区| 国产精品美日韩| 精品国产电影一区二区| 日韩精品中文字幕在线不卡尤物| 欧美日韩日日骚| 精品视频在线免费看| 91国偷自产一区二区开放时间| 久久精品午夜| 久久久国产精品一区二区三区| 国产一区二区三区成人欧美日韩在线观看| 亚洲国产婷婷| 一区二区三区免费看| 亚洲欧美久久久| 亚洲免费网站| 久久久亚洲人| 在线观看精品一区| 欧美日韩和欧美的一区二区| 欧美视频你懂的| 欧美日韩国产另类一区| 69久久99精品久久久久婷婷| 在线不卡欧美精品一区二区三区| 欧美日韩在线播放一区| 欧美日韩久久久久久| 欧美日韩国产综合草草| 欧美精品国产精品| 欧美电影在哪看比较好| 欧美精品色一区二区三区| 欧美一区二区三区日韩视频| 日韩欧美国产精品一区| 精品处破学生在线二十三| 国产女同互慰高潮91漫画| 中文字幕精品—区二区四季| 亚洲视频免费在线观看| 亚洲午夜久久久久中文字幕久| 午夜久久久久久电影| 麻豆国产欧美日韩综合精品二区 | 欧美日韩小视频| 日韩视频永久免费| 久久久无码精品亚洲日韩按摩| 日本一区二区三区视频视频| 亚洲女人的天堂|