【发布时间】:2023-04-02 17:02:01
【问题描述】:
我最近问了另一个(相关)问题,这导致了这个后续问题: Submitting data instead of a file for an input form
阅读 jQuery.ajax() 文档 (http://api.jquery.com/jQuery.ajax/),似乎接受的数据类型列表不包括图像。
我正在尝试使用 jQuery.get(或 jQuery.ajax,如果我必须)检索图像,将此图像存储在 Blob 中,然后通过 POST 请求将其上传到另一台服务器。目前,看起来由于数据类型不匹配,我的图像最终被损坏(以字节为单位的大小不匹配等)。
执行此操作的代码如下(在coffeescript中但应该不难解析):
handler = (data,status) ->
fd = new FormData
fd.append("file", new Blob([data], { "type" : "image/png" }))
jQuery.ajax {
url: target_url,
data: fd,
processData: false,
contentType: "multipart/form-data",
type: "POST",
complete: (xhr,status) ->
console.log xhr.status
console.log xhr.statusCode
console.log xhr.responseText
}
jQuery.get(image_source_url, null, handler)
我怎样才能将此图像作为 blob 检索?
【问题讨论】:
-
我认为你必须在服务器端更改响应类型。
-
我正在尝试从任何 url 中提取图像,而不是我必须拥有的服务器。
-
似乎该答案中的三个解决方案是(1)使用
标签,(2)使服务器以 byte64 编码的形式提供图像或(3)使用浏览器的缓存. (2) 被排除,因为我希望脚本可以使用任何图像 url。我不确定如何使用 (1) 或 (3),因为一旦我下载了图像,我需要将其转换为 Blob。
-
选项 3 仅在您已经下载图像时才有效。您将第一次需要不同的东西。也许选择 1?
标签: javascript jquery