【问题标题】:Valums AjaxUpload and Wordpress wp_handle_upload价值 AjaxUpload 和 Wordpress wp_handle_upload
【发布时间】:2010-08-26 20:11:47
【问题描述】:

我正在尝试在我的 wordpress 选项面板和元框中实现 AjaxUpload 的新版本......虽然我不相信我应该改变我工作的旧版本。这是调用上传函数的 jquery:

var uploader = new qq.FileUploader({
// pass the dom node (ex. $(selector)[0] for jQuery users)
element: document.getElementById('file-uploader'),
// path to server-side upload script
action: ajaxurl,
params: {
    action: 'upload_callback',
    id: 'image',
},
});

我记得 ajaxurl 和传递操作,以便稍后用作我尝试使用以前版本的函数名称。从这个函数被调用的意义上来说,它似乎运行正常。

然后我的回调函数是

function childtheme_upload_callback() {
 $stuff = htmlspecialchars(serialize($_POST));
 die( "hey: " . $stuff );

}

add_action('wp_ajax_upload_callback', 'childtheme_upload_callback'); 

这个函数是我尝试wp_handle_upload的地方,但它总是空的,所以我开始尝试通过检查是否有任何东西通过来调试它。但无论我做什么$_POST$_FILES 都是空的。即使萤火虫说发布请求看起来像这样:

http://localhost/plagueround/wp-admin/admin-ajax.php?qqfile=12_col.gif&action=upload_callback&id=image

萤火虫说帖子“来源”看起来像:

来源 GIF89aü����ÿêêÿÓÓÿÿÿÿåå,����ü��9©Ë8£´Ú+¸ûm HÈê ¡®×ÞØº;ûéÄÐP9Éݲé\�;

我认为是哪个图像?但在这一点上,我不知道。有没有人用 Wordpress 的wp_handle_upload 成功应用新的http://valums.com/ajax-upload/ Ajax Upload?

【问题讨论】:

    标签: javascript wordpress file-upload


    【解决方案1】:

    所以也许..也许是这个
    params: { action: 'upload_callback', id: 'image', }, });
    在最后一个 }.. 之后有一个额外的逗号应该是....
    params: { action: 'upload_callback', id: 'image', }});

    你也试过http://valums.com/ajax-upload/的所有故障排除技巧如果上传没有完成,说失败。

    • 将 FileUploader 的调试选项设置为 true。
    • 打开您有 FileUploader 的页面。
    • 在浏览器中打开开发者控制台。
    • 尝试上传文件。您应该看到一个服务器响应。 对于已完成的请求,它应该是 {success:true}。如果不是,那么您的服务器端脚本有问题。

    不知道这是否有帮助?

    【讨论】:

      【解决方案2】:

      我能够让它工作。 WordPress 中的 jsUpload 和 wp_handle_upload。我建议看一下 jsUpload 存档中提供的服务器示例 php.php 文件。他们使用这样的东西来有效地将文件上传到临时目录:

      $uploader = new qqFileUploader($allowedExtensions, $sizeLimit);
      $result = $uploader->handleUpload( $upload_tmp_dir.'/' ); // with ending slash
      

      希望对您有所帮助。否则,请告诉我,我会尽力帮助您。

      【讨论】:

        【解决方案3】:

        我知道这是一篇旧帖子,但这可能会帮助其他遇到同样问题的人。

        检查您的响应格式是否正确,并且您正在退出请求;

        您的回复应如下所示:

        {'success'=>true}
        

        据我所知die( "hey: " . $stuff ); 会产生不正确的响应

        hey: {'success'=>true}
        

        这是我的回调函数的样子:

        public function uploadCallback(){
        
            $uploader = new FileUploadManager($allowedExtensions, $sizeLimit);
            $resultArray = $uploader->handleUpload('uploads/');
        
            echo htmlspecialchars(json_encode($resultArray);
            exit;
        }
        

        【讨论】:

        • 绝对是老帖子!我显然还没有继续努力,但谁知道呢,我可能很快就会回来。感谢回调函数...我一直在学习“退出”非常重要。
        猜你喜欢
        • 1970-01-01
        • 2012-04-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-11
        • 1970-01-01
        • 2023-01-14
        • 1970-01-01
        相关资源
        最近更新 更多