我使用url: URL.createObjectURL( file )创建了PDF文件的对象url。
例如url = blob:http://0.0.0.0:5002/e468fb70-d597-4b17-bb3a-ec6272f2d7fe。
现在我想做的是,从url=blob:http://0.0.0.0:5002/e468fb70-d597-4b17-bb3a-ec6272f2d7fe中读取pdf并创建类似的文件对象
File(61)
{
name: "ICT_zbbihfc_dummy.pdf",
lastModified: 1548148972779,
lastModifiedDate: Tue Jan 22 2019 17:22:52 GMT+0800 (Singapore Standard Time),
webkitRelativePath: "",
size: 61,
type: "application/pdf",
webkitRelativePath: ""
}这是在Javascript里。
发布于 2019-01-23 01:58:04
将PDF或图像的Blob对象url转换为文件对象
var file_object = fetch('blob:http://0.0.0.0:5002/e468fb70-d597-4b17-bb3a-ec6272f2d7fe')
.then(r => r.blob())
.then(blob => {
var file_name = Math.random().toString(36).substring(6) + '_name.pdf'; //e.g ueq6ge1j_name.pdf
var file_object = new File([blob], file_name, {type: 'application/pdf'});
console.log(file_object); //Output
});
//------- 将图像的Base64转换为文件对象
var file_object = fetch('data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAA')
.then(r => r.blob())
.then(blob => {
var file_name = Math.random().toString(36).substring(6) + '_name.jpeg'; //e.g ueq6ge1j_name.jpeg
var file_object = new File([blob], file_name, {type: 'application/jpeg'});
console.log(file_object); //Output
});
//------- 发布于 2019-01-22 09:45:16
你在一条评论中澄清:
我正在从输入标签中选择文件。在那之后,我创建了它的blob url。现在,在提交按钮上,我希望将文件从blob中读取为文件Object..then,将文件对象发送到服务器。
这样做不需要File对象。您可以简单地发送Blob,例如使用FormData的append方法,它接受Blob的。
但是:如果您拥有input,并且已经从input的files数组中获得了files,那么您最好直接使用它,而不是读取它并创建一个Blob。
可能值得指出的是,input type="file"元素有一个 attribute,可以用来指定它可以用于多个文件(这就是为什么files属性是一个集合)。
https://stackoverflow.com/questions/54305142
复制相似问题