我有一个FormData对象,我想在其中添加.png和.pdf文件的文件。
到目前为止,我已经做到了:
async setData(file) {
const formData = new FormData();
formData.append('type', file.type);
formData.append('file', await this.fileToBlob(file.location)); // filereader image object which can be sent to the server
formData.append('name', file.new_name);
formData.append('url', file.location);
return formData;
},
我可以正确填充所有字段,但文件本身应包含文件本身。我不能在文件字段中放置适当的Blob类型。
为此,我尝试了这种方法:
async fileToBlob(location) {
const base64 = await this.imgTob64(location); // returns the path of the image / the link in this case since it is saved in the cloud
return fetch(base64)
.then(res => res.blob())
.then(blob => console.log(blob))
.catch(error => console.log(error))
};
首先,它不起作用,其次,它仅接受base64字符串,该字符串适合图像,但不适用于pdf文件。
在laravel网站上,我正在使用api等s3接收来自数字海洋的文件:
public function getFileLocation()
{
return Storage::disk('do_spaces')->url('files/'.$this->fileName);
}
我目前的想法是基本上将文件从url转换为blob,然后将其返回给客户端,然后再将其附加到FormData,但是如何管理从文件url到javascript的正确Blob?