2013-07-14 31 views
2

我使用jQuery来检索图像并将其发布到另一种形式:提交的数据,而不是为输入表单文件

handler = function(data, status) { 
    ... 
    var fd; 
    fd = new FormData; 
    fd.append("file", data); 
    jQuery.ajax({ 
     url: target_url, 
     data: fd, 
     processData: false, 
     contentType: false, 
     type: "POST", 
     complete: function(xhr, status) { 
     console.log(xhr.status); 
     console.log(xhr.statusCode); 
     } 
    }); 
}; 
jQuery.get(imageUrl, null, handler); 

的形式看起来是这样的:

<form> 
    <input type="file" name="file" /> 
    ... 
</form> 

事情没有按预期工作。我从服务器端获得200响应,并且它呈现具有预填充的一些值的表单。

我也试着设置contentType: "multipart/form-data"

任何想法,为什么这是不工作?

回答

1

您发送的字符串不会被识别为文件。 尝试发送一个blob

fd.append("file", new Blob([data], { "type" : "text/plain" })); 

我敢肯定,这将只对文本文件的工作,除非你设置的原始请求的responseType。

+0

嗯。如果这是一个图像,我是否需要相应地设置类型? “image/png”等。 – jabalsad

+0

那么,那肯定会做点什么。谢谢:)现在我只需要弄清楚为什么图像的大小发生了变化。原始图像大小15k,提交的数据= 35k:/ – jabalsad

+0

@jabalsad大小因为图像数据已转换为文本以防止出现此问题而发生变化,因此您必须设置XMLHttpRequest对象的“responseType”属性(以blob)。 – Musa