Valums AjaxUpload和Wordpress wp_handle_upload

时间:2010-08-26 20:11:47

标签: javascript wordpress file-upload

我正在尝试在我的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

和firebug说帖子“来源”看起来像:

  

来源   GIF89aü ÿêêÿÓÓÿÿÿÿåå, ü 9©Ë8£'Ú+¸ûmHÈê¡××Þغ;ûéÄÐP9Éݲé\ ;

我认为这是什么形象?但在这一点上我不知道。有没有人使用Wordpress的wp_handle_upload成功应用新的http://valums.com/ajax-upload/ Ajax上传?

3 个答案:

答案 0 :(得分:1)

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

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

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

不知道这有用吗?

答案 1 :(得分:0)

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

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

希望它有所帮助。否则,让我知道,我会尽力帮助你。

答案 2 :(得分:0)

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

检查您的回复是否格式正确并且您要退出请求;

您的回答应如下所示:

{'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;
}