为了账号安全,请及时绑定邮箱和手机立即绑定

php 文件上传 uploadify 的问题

php 文件上传 uploadify 的问题

PHP
米琪卡哇伊 2019-03-18 18:10:47
使用TP做附件上传部分,找了很多插件,最后用了uploadify插件,使用中有这样一个问题. 后台处理代码: public function uploads(){ //date("Y/m/d")和date("Y-m-d")生成路径的不同,/直接被转换成了目录层级 $targetFolder = '/oschina/Addons_Project/Addons/Public/Uploads/Files/'.date("Y/m/d"); // Relative to the root $verifyToken = md5('unique_salt' . $_POST['timestamp']); if (!empty($_FILES) && $_POST['token'] == $verifyToken) { $tempFile = $_FILES['Filedata']['tmp_name']; $targetPath = $_SERVER['DOCUMENT_ROOT'] . $targetFolder; // 如果没有文件夹则进行创建,默认代码中没有 is_dir($targetPath)||mkdir($targetPath,0777,true); //对文件名进行重命名 $targetFile = rtrim($targetPath,'/') . '/' . md5(time()).$_FILES['Filedata']['name']; // Validate the file type $fileTypes = array('jpg','jpeg','gif','png'); // File extensions $fileParts = pathinfo($_FILES['Filedata']['name']); if (in_array($fileParts['extension'],$fileTypes)) { move_uploaded_file($tempFile,$targetFile); ★ echo $targetFile; } else { echo 'Invalid file type.'; } } } 前台页面: <form id="uploads"> <div id="queue"></div> <input id="file_upload" name="file_upload" type="file" multiple="true"> <input type="submit" value="提交"> </form> <script type="text/javascript"> <?php $timestamp = time();?> $(function() { $('#file_upload').uploadify({ 'formData' : { 'timestamp' : '<?php echo $timestamp;?>', 'token' : '<?php echo md5('unique_salt' . $timestamp);?>' }, 'swf' : '/oschina/Addons_Project/Addons/Public/Org/uploadify/uploadify.swf', 'uploader' : 'http://localhost/oschina/Addons_Project/Addons/index.php/demo/index/uploads', 'onUploadSuccess' : function(file, data, response) { ★ alert(data); } }); }); </script> alert(data);显示的是后台的是echo $targetFile;的内容。(标 ★的代码部分) 显示的样式如下:第一行是想要的信息,多出了好多样式信息,该怎么处理了,在jquery ajax处理数据中也遇到这种情况,出现这种情况的原因是什么,该怎么处理了? 还有一个问题大家在用TP做附件上传时,是怎么做的. 直接用<input id="file_upload" name="file_upload" type="file" multiple="true">和用插件如uploadify等有什么差异?
查看完整描述

2 回答

?
噜噜哒

TA贡献1784条经验 获得超7个赞

开启了tp的debug模式吧
与接口通信建议不要直接echo这样
如果是thinkphp5可以用

return json(['data'=>$targetFile,'code'=>1,'message'=>'操作完成']);

类似这样来返回

查看完整回答
反对 回复 2019-03-18
?
慕的地8271018

TA贡献1796条经验 获得超4个赞

  1. 接口返回用 return,浏览器network里面 preview下看看你返回的是什么内容。
  2. 你用插件的话,就是相当于异步了,图片提前上传,而且可以在前台显示图片的上传进度条之类
查看完整回答
反对 回复 2019-03-18
  • 2 回答
  • 0 关注
  • 492 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信