php 文件上传 uploadify 的问题

使用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等有什么差异?

https://img4.mukewang.com/5c8f6ea600012e7104420555.jpg

米琪卡哇伊
浏览 493回答 2
2回答

噜噜哒

开启了tp的debug模式吧与接口通信建议不要直接echo这样如果是thinkphp5可以用 return json(['data'=>$targetFile,'code'=>1,'message'=>'操作完成']); 类似这样来返回

慕的地8271018

接口返回用 return,浏览器network里面 preview下看看你返回的是什么内容。 你用插件的话,就是相当于异步了,图片提前上传,而且可以在前台显示图片的上传进度条之类
打开App,查看更多内容
随时随地看视频慕课网APP