move_uploaded_file with ajax

时间:2013-03-27 16:14:04

标签: php ajax

尝试从表单上传文件时遇到问题。带有文件输入的表单是使用ajax创建的。

Ajax的getForm.php

<input id="uploadCouponPhoto" name="uploadCouponPhoto" type="file">

然后我在按钮上使用javascript

<input id="popup_couponBox_commandButton" type="button" onclick="javascript: coupons_apply();" value="Appliquer">

执行另一个保存表单的ajax文件。

Ajax的saveCoupon.php

$customPhoto = @$_POST['uploadCouponPhoto'];
if(!empty($customPhoto)){
    $name = "coupon_".$idCoupon;
    $directory = $_SERVER["DOCUMENT_ROOT"]."/resources/images/members/".$idMember;
    if(move_uploaded_file($customPhoto, $directory."/".$name)){
        echo "success";
    }
    else{
        var_dump($_FILES['uploadedfile']['error']);
    }
}

但是,ajax-saveCoupon.php的响应始终为false。我试图使用$_FILES['uploadedfile']['error']查看错误,但这会给出NULL。var_dump($_FILES)给出一个空数组。我还可以在ajax-saveCoupon标头的表单数据中看到uploadCouponPhoto: C:\fakepath\small-logo2.jpeg。我想知道我做错了什么才能正常工作,是因为move_uploaded_file与输入不在同一个文件中?

感谢。

1 个答案:

答案 0 :(得分:2)

您不能简单地使用AJAX POST文件。您可以使用FileReader API读取文件并构建自己的multipart/form-data请求。

这是非常复杂的,有许多教程如何做到这一点。祝你好运。