php 文件上传 uploadify 的问题

发布于 2022-09-05 09:14:04 字数 2557 浏览 35 评论 0

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

图片描述

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

濫情▎り 2022-09-12 09:14:04

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

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

类似这样来返回

兰花执着 2022-09-12 09:14:04
  1. 接口返回用 return,浏览器network里面 preview下看看你返回的是什么内容。
  2. 你用插件的话,就是相当于异步了,图片提前上传,而且可以在前台显示图片的上传进度条之类
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文