php前后端文件上传,php文件上传后端处理方法

php文件上传后端处理方法

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} \r\n";

}

$apkName = $fileData['fileName'];

$version = $apkInfo['versionName'];

}

$fileInfo = htmlspecialchars(json_encode($tmpFileArr['file_info']));

$fileInfoHtml = "";  //一定要输出前使用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文件上传后端处理方法】相关文章:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值