基本上,网站上有很多图片。用户通过单击选择一个图像,然后将其上传到其他服务器。
我有一个实现,它在img标签中读取用户选择的图像src,并将其作为通过ajax附加到URL末尾的base64字符串上传到不同的服务器。
我希望将此图片上传为formData或文件上传。有什么帮助吗?
我当前的实现使用文件阅读器的输出创建formData并将其作为数据上传到ajax:
var img_data = new FormData();
// img is output of file reader which looks like "data:image/jpg;base64,XXX"
img_data.append("image", img, "site_image.jpg");
$.ajax({
type : 'post',
url : "other server url",
data : img_data,
contentType: "image/jpeg",
processData: false,
...}),
但我在烧瓶服务器中看不到任何有用的数据。这是烧瓶中的输出:
files: len: 0 type: <class 'werkzeug.datastructures.ImmutableMultiDict'>
[]
data: len: 136 type: <type 'str'>
------WebKitFormBoundaryJ8YC9pZxjqRl0tyD
Content-Disposition: form-data; name="image"
------WebKitFormBoundaryJ8YC9pZxjqRl0tyD--
form: len: 0 type: <class 'werkzeug.datastructures.ImmutableMultiDict'>
ImmutableMultiDict([])
在数据str中有奇怪的东西,但无法获取任何图像数据。
答案 0 :(得分:0)
在不转换为base64
的情况下上传图片需要您使用FormData
。
对我来说,我使用jQuery Form
,它会为你模仿ajax帖子,并且(如果
浏览器不支持的方法)。
如果您想手动完成,请参阅此问题及其最佳答案:
How to use FormData for ajax file upload