成功上传到 Google 驱动器,但打开时文件为空(仍有大小)
Success upload to Google Drive but empty file when open (Still have size)
将图像 URL 转换为 base64 字符串后,我尝试将此 base64 图像上传到 Goolge Drive,一切正常:响应代码 200,Goole Drive 在 App/Web 中显示此文件。
但是当我打开这张图片时,它好像Google 改变了 base64 字符串的内容,所以它无法读取。
下载图像并将其从 GD 转换为 base64 字符串后,我发现原来的 base64 字符串发生了变化。
上传前:https://anotepad.com/notes/nt6fct
文件来自 Google 驱动器:https://anotepad.com/notes/ayg57q
上传代码:
testUploadFile(fileInfo, base64Data){
const boundary = '-------314159265358979323846';
const delimiter = "\r\n--" + boundary + "\r\n";
const close_delim = "\r\n--" + boundary + "--";
var contentType = fileInfo.type || 'application/octet-stream';
var metadata = {
'name': fileInfo.title,
'mimeType': contentType
};
var multipartRequestBody =
delimiter +
'Content-Type: application/json\r\n\r\n' +
JSON.stringify(metadata) +
delimiter +
'Content-Type: ' + contentType + '\r\n' +
'Content-Transfer-Encoding: base64\r\n' +
'\r\n' +
base64Data +
close_delim;
gapi.client.request({
'path': '/upload/drive/v3/files',
'method': 'POST',
'params': {
'uploadType': 'multipart'
},
'headers': {
'Content-Type': 'multipart/related; boundary="' + boundary + '"'
},
'body': multipartRequestBody
}).then(function(response){
console.log(response);
});
}
有问题@@ 能指正一下吗?
提前致谢!
这个简单的示例可能会帮助您找出代码中的问题。
function createFile(){
const boundary = '-------314159265358979323846';
const delimiter = "\r\n--" + boundary + "\r\n";
const close_delim = "\r\n--" + boundary + "--";
var fileContent = 'It works :)';
var metadata = {
'name': 'myFile',
'mimeType': 'text/plain\r\n\r\n'
};
var multipartRequestBody = delimiter + 'Content-Type: application/json\r\n\r\n' + JSON.stringify(metadata) + delimiter + 'Content-Type: ' + 'text/plain\r\n\r\n' + fileContent + close_delim;
gapi.client.request({
'path': '/upload/drive/v3/files',
'method': 'POST',
'params': {
'uploadType': 'multipart'
},
'headers': {
'Content-Type': 'multipart/related; boundary="' + boundary + '"'
},
'body': multipartRequestBody
}).then(function(response){
console.log(response);
});
}
将图像 URL 转换为 base64 字符串后,我尝试将此 base64 图像上传到 Goolge Drive,一切正常:响应代码 200,Goole Drive 在 App/Web 中显示此文件。
但是当我打开这张图片时,它好像Google 改变了 base64 字符串的内容,所以它无法读取。
下载图像并将其从 GD 转换为 base64 字符串后,我发现原来的 base64 字符串发生了变化。
上传前:https://anotepad.com/notes/nt6fct
文件来自 Google 驱动器:https://anotepad.com/notes/ayg57q
上传代码:
testUploadFile(fileInfo, base64Data){
const boundary = '-------314159265358979323846';
const delimiter = "\r\n--" + boundary + "\r\n";
const close_delim = "\r\n--" + boundary + "--";
var contentType = fileInfo.type || 'application/octet-stream';
var metadata = {
'name': fileInfo.title,
'mimeType': contentType
};
var multipartRequestBody =
delimiter +
'Content-Type: application/json\r\n\r\n' +
JSON.stringify(metadata) +
delimiter +
'Content-Type: ' + contentType + '\r\n' +
'Content-Transfer-Encoding: base64\r\n' +
'\r\n' +
base64Data +
close_delim;
gapi.client.request({
'path': '/upload/drive/v3/files',
'method': 'POST',
'params': {
'uploadType': 'multipart'
},
'headers': {
'Content-Type': 'multipart/related; boundary="' + boundary + '"'
},
'body': multipartRequestBody
}).then(function(response){
console.log(response);
});
}
有问题@@ 能指正一下吗? 提前致谢!
这个简单的示例可能会帮助您找出代码中的问题。
function createFile(){
const boundary = '-------314159265358979323846';
const delimiter = "\r\n--" + boundary + "\r\n";
const close_delim = "\r\n--" + boundary + "--";
var fileContent = 'It works :)';
var metadata = {
'name': 'myFile',
'mimeType': 'text/plain\r\n\r\n'
};
var multipartRequestBody = delimiter + 'Content-Type: application/json\r\n\r\n' + JSON.stringify(metadata) + delimiter + 'Content-Type: ' + 'text/plain\r\n\r\n' + fileContent + close_delim;
gapi.client.request({
'path': '/upload/drive/v3/files',
'method': 'POST',
'params': {
'uploadType': 'multipart'
},
'headers': {
'Content-Type': 'multipart/related; boundary="' + boundary + '"'
},
'body': multipartRequestBody
}).then(function(response){
console.log(response);
});
}