使用jQuery ajax发送图像时清空$ _FILE

时间:2016-04-14 01:38:25

标签: php jquery ajax file

我正在尝试将图片文件上传到服务器,但$ _FILE始终为空,我不知道原因。

这是html:

public ModelAndView addTask(@ModelAttribute("task") Tasks tasks, BindingResult bindingResult) {
    if (bindingResult.hasErrors()) {
        //errors handling
    }
}

这里是jquery脚本:

    <form action='' id='ajax_form' method='post' enctype="multipart/form-data">
      <input type='file' name='imagem'>
      <input type='submit' id='btUploadImagem' value='Upload'>
    </form>

控制器php:

    function salvaImagem(){

    var form = $(this).closest('form'); 
    var formData = new FormData(form);
    var dados = formData;
    jQuery.ajax({
        type: "POST",
        url: "salvaImagem",
        data: dados,
        contentType: false,
        processData: false,
        dataType: "json"}).done(function(response)
        {
            if(response.sucesso){
                //show success message
            }
            else{
                //show error message
            }
        });
    return false;
}

$('#btUploadImagem').on('click', salvaImagem); 

我做错了什么,所以$ _FILE总是空的?

2 个答案:

答案 0 :(得分:0)

我建议您使用插件进行管理上传。尝试使用Jquery Plupload

但如果您不想使用插件,请尝试print_r($ _ FILES,true)以查看是否存在任何信息

答案 1 :(得分:0)

你试过dados.append(name, value, filename);吗?有关详细信息,请查看https://developer.mozilla.org/en-US/docs/Web/API/FormData/append。我自己不熟悉FormData Web API。 您也可以在此处找到答案:How to use FormData for ajax file upload