此问题已在此处有答案:
Convert Data URI to File then append to FormData(14个答案)
昨天关门了。
我需要在Javascript中将dataURL转换为File对象,以便使用 AJAX 发送它。这可能吗?如果是,请告诉我如何。
此问题已在此处有答案:
Convert Data URI to File then append to FormData(14个答案)
昨天关门了。
我需要在Javascript中将dataURL转换为File对象,以便使用 AJAX 发送它。这可能吗?如果是,请告诉我如何。
6条答案
按热度按时间wsxa1bj11#
如果你需要 AJAX 发送它,那么就不需要使用
File
对象,只需要Blob
和FormData
对象。正如我所指出的,为什么不通过 AJAX 将base64字符串发送到服务器,并将其转换为二进制服务器端,例如使用PHP的
base64_decode
?无论如何,来自this answer的标准兼容代码可以在Chrome 13和WebKit Nightlies中工作:然后将blob附加到一个新的FormData对象,并使用 AJAX 将其发布到服务器:
bzzcjhmw2#
BlobBuilder已弃用,不应再使用。使用Blob代替旧的BlobBuilder。代码非常干净和简单。
File对象继承自Blob对象。您可以在FormData对象中使用这两种方法。
使用dataURLtoBlob()函数将dataURL转换为blob并 AJAX 发送到服务器。
例如:
另一种方式:
您也可以使用fetch将url转换为文件对象(文件对象具有name/fileName属性,这与blob对象不同)
代码很短,易于使用。
(works in Chrome and Firefox)
使用示例1:只是转换为文件对象
使用示例2:转换为文件对象并上传到服务器
1tuwyuhd3#
要从dataURL创建blob,请执行以下操作:
要从blob创建文件,请执行以下操作:
hgb9j2n64#
如果您真的想将dataURL转换为
File
对象。您需要将dataURL转换为
Blob
,然后将Blob
转换为File
。这个函数来自Matthew的回答。(https://stackoverflow.com/a/7261048/13647044)除此之外,您可以初始化
File
Object上的选项。Reference到File()构造函数。类型应为
[MIME][1]
类型(即image/jpeg
),在我的示例中最后修改的值相当于Mon Aug 10 2020 19:37:31 GMT+0200 (Eastern European Standard Time)
aemubtdh5#
在最新浏览器中:
0lvr5msh6#
经过一番研究,我得出了这个结论: