通过驱动器api上传时看不到Base64字符串img
我已通过node express中的API将base64 img字符串上传到Google云端硬盘。上载img后,在云端硬盘中将无法看到它。我不确定如何解决此格式问题。我知道我可以先在本地保存img,然后再上传保存的img文件,但我希望有一种更简单的方法。
我的代码:
const uploadImg = async (folderId,img)=>{
process.env['NODE_TLS_REJECT_UNAUTHORIZED'] = 0
const scopes = [
''
];
const auth = new google.auth.JWT(
demoApiCreds.client_email, null,
demoApiCreds.private_key, scopes
);
const drive = google.drive({ version: 'v3', auth });
const fileMetadata = {
'name': 'Client_Design_ScreenShotTest',
'mimeType':'image/jpeg',
'parents':[folderId]
};
const uploadImg = img.split(/,(.+)/)[1];
const media = {
body: uploadImg
}
let res = await drive.files.create({
resource: fileMetadata,
media: media,
fields: 'id',
});
console.log('the response is',res);
console.log('the data is ',res.data);
return res.data;
}
编辑:
文件以jpg格式存储在驱动器中,但img为空白,之后单击img,Google驱动器会抱怨该文件无法读。下载后,img仍然为空白。
基本64 img字符串为
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAhAAAADqCAYAAADzlnzfAAAAAXNSR0I...
我已按照其他线程中的建议在上传之前删除了data:image / png; base64。无论是否带有此前缀,它都会失败。
回答如下:您需要将mimeType
更改为image/png
。
参见此处what Mime Types是
编辑:fileMetadata的属性名称称为requestBody
,而不是resource
。
让res =等待drive.files.create({requestBody:fileMetadata,媒体:媒体,栏位:「id」,});
https://github/googleapis/google-api-nodejs-client/blob/7e2b586e616e757b72f7a9b1adcd7d232c6b1bef/src/apis/drive/v3.ts#L3628