1 回答

TA贡献1780条经验 获得超1个赞
这个改装怎么样?
修改点:
似乎不能直接
multipart/form-data
使用ajax 请求FormData()
。所以在这种情况下,需要创建结构multipart/form-data
并将其作为数据发送。在您的脚本中,仅上传文件内容而没有文件元数据。这样,上传的文件就没有文件名了。在这种情况下,需要上传文件内容和文件元数据
multipart/form-data
。在您的脚本中,有 2 个属性
data
。
当以上几点反映到您的脚本中时,它会变成如下。
修改脚本:
Upload.prototype.doUpload = function () {
const file = this.file; // It supposes that "this.file" is the blob.
const fr = new FileReader();
fr.readAsDataURL(file);
fr.onload = function() {
const boundary = "xxxxxxxxxx";
let data = "--" + boundary + "\n";
data += "Content-Type: application/json; charset=UTF-8\n\n";
data += JSON.stringify({name: "test_file"}) + "\n";
data += "--" + boundary + "\n";
data += "Content-Transfer-Encoding: base64\n\n";
data += fr.result.split(",")[1] + "\n";
data += "--" + boundary + "--";
$.ajax({
type: "POST",
beforeSend: function(request) {
request.setRequestHeader("Authorization", "Bearer" + " " + localStorage.getItem("accessToken"));
request.setRequestHeader("Content-Type", "multipart/related; boundary=" + boundary);
},
url: "https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart",
success: function (data) {
console.log(data);
},
error: function (error) {
console.log(error);
},
async: true,
data: data,
cache: false,
processData: false,
timeout: 60000
});
}
}
笔记:
在这个修改后的脚本中,
它假定
this.file
在您的脚本中是 blob。您的访问令牌可用于将文件上传到 Google 云端硬盘。
使用
uploadType=multipart
时,最大文件大小为 5 MB。请注意这一点。
添加回答
举报