如何在JavaScript中将图像二进制数据提交到Flask REST API

15 浏览
0 Comments

如何在JavaScript中将图像二进制数据提交到Flask REST API

假设页面上有这个元素:\n\n这将创建一个按钮,允许网页用户通过浏览器中的操作系统“打开文件...”对话框选择文件。\n假设用户点击了该按钮,在对话框中选择了一个文件,然后点击“确定”按钮关闭对话框。\n此时所选择的文件名被存储在:\ndocument.getElementById(\"image-file\").value\n现在,假设服务器在URL“/upload/image”处理多部分POST请求。\n我该如何将文件发送到“/upload/image”?\n另外,我该如何监听文件上传完成的通知?

0
0 Comments

问题的出现原因:

这位用户在尝试将图像二进制数据通过JavaScript发送到Flask REST API,但是之前的回答都没有起作用。他在代码中使用了input和button元素,并在JavaScript代码中定义了一个名为doupload()的函数,该函数用于将文件上传到指定的URL。但是,他在使用PUT方法时遇到了问题,因为他使用的是web server for chrome,而该服务器不支持PUT方法。

解决方法:

为了解决这个问题,用户进行了以下操作:

1. 在HTML代码中,他使用了input元素来让用户选择文件,并使用button元素来触发上传操作。

2. 在JavaScript代码中,他定义了一个名为doupload()的函数,该函数在点击按钮时被调用。

3. 在doupload()函数中,他使用document.getElementById()方法获取选择的文件,并将其保存在data变量中。

4. 然后,他使用fetch()方法发送PUT请求到指定的URL,其中包含了文件的二进制数据。

5. 最后,他使用alert()方法显示上传成功的提示信息,并使用location.reload()方法重新加载页面。

需要注意的是,用户在使用web server for chrome时,需要在高级选项中启用文件上传选项,否则将会出现不允许上传的错误。

这就是用户遇到问题的原因以及解决方法。他通过使用JavaScript将图像二进制数据发送到Flask REST API,并成功上传了文件。

0
0 Comments

问题的出现的原因是作者尝试使用JavaScript将图像二进制文件提交到Flask REST,但请求选项中不包含图像文件。

解决方法是,如果只是想通过ajax上传文件,可以直接将表单提交到`/upload/image`。如果想在后台上传图像(即不提交整个表单),可以使用ajax或iframe来实现。可以参考提供的链接了解如何使用ajax和iframe上传文件。另外,可以使用JavaScript和Ajax实现最近的投票功能。

作者尝试了上述方法,但在服务器上并没有包含图像文件。

0
0 Comments

问题的原因是在使用JavaScript将图像二进制文件上传到Flask REST时出现了错误。解决方法是使用fetch或XMLHttpRequest发送POST请求,并将图像文件作为FormData附加到请求中。以下是详细的解决方法:

1. 使用fetch发送POST请求:

let photo = document.getElementById("image-file").files[0];
let formData = new FormData();
formData.append("photo", photo);
fetch('/upload/image', {method: "POST", body: formData});

2. 使用XMLHttpRequest发送POST请求:

let photo = document.getElementById("image-file").files[0];
let req = new XMLHttpRequest();
let formData = new FormData();
formData.append("photo", photo);
req.open("POST", '/upload/image');
req.send(formData);

需要注意的是,服务器端可以通过读取FormData参数中的原始文件名以及其他信息来获取图像文件的相关信息。此外,不需要手动设置请求头的Content-Type为multipart/form-data,浏览器会自动设置该参数。在请求中还可以附加额外的数据,例如将JSON对象转换为字符串并附加到FormData中。

上述解决方法适用于所有主流浏览器,并且可以在服务器端正确地处理文件上传。如果出现错误,可以检查服务器端是否正确实现了相应的POST方法以及请求的URL是否正确。

0