Node.js 从firebase下载文件并上传到stripe进行id验证
我正在尝试获取一个存储在firebase存储中的id jpeg,并将其上载到stripe,以便让我的客户验证他们的身份。但是,我遇到了几个错误,函数停止了Node.js 从firebase下载文件并上传到stripe进行id验证,node.js,typescript,firebase,google-cloud-functions,stripe-payments,Node.js,Typescript,Firebase,Google Cloud Functions,Stripe Payments,我正在尝试获取一个存储在firebase存储中的id jpeg,并将其上载到stripe,以便让我的客户验证他们的身份。但是,我遇到了几个错误,函数停止了 import * as https from 'https' import * as fs from 'fs' const stripe = Stripe('sk_test'); function getidFile(url: string):Promise<any>{ return ne
import * as https from 'https'
import * as fs from 'fs'
const stripe = Stripe('sk_test');
function getidFile(url: string):Promise<any>{
return new Promise((resolve,reject) => {
const file = fs.createWriteStream("test.jpg");
https.get(
url,
function(response: IncomingMessage){
console.log('Response ', response);
response.pipe(file);
file.on('finish', function() {
file.close();
resolve(file);
});
}
).on('error', function(err) { // Handle errors
reject(err);
});
});
}
function uploadFileToStripe(fileUrl:string,fileType:string,fileName:string):Promise<any>{
return getidFile(
fileUrl
).then(
(data:any) => {
console.log('File as blob ', data);
const upload: Promise<any> =
stripe.files.create(
{
file: {
data: data,
name: fileName,
type: 'image/jpeg',
},
purpose: 'identity_document',
}
);
return upload.then(
(document: any) => {
console.log('Document upload ', document);
return document;
}
).catch(
(_error: any) => {
console.log('Error uploading document ', _error);
return _error;
}
)
}
).catch(
(_error:any) => {
console.log('Error with response ', _error);
return _error;
}
);
}
import*作为https从“https”导入
将*作为fs从“fs”导入
常量条带=条带(“sk_测试”);
函数getidFile(url:string):承诺{
返回新承诺((解决、拒绝)=>{
const file=fs.createWriteStream(“test.jpg”);
https.get(
网址,
功能(响应:输入消息){
console.log('Response',Response);
管道(文件);
on('finish',function(){
file.close();
解决(文件);
});
}
).on('error',函数(err){//处理错误
拒绝(错误);
});
});
}
函数uploadFileToStripe(fileUrl:string,fileType:string,fileName:string):承诺{
返回getidFile(
文件URL
).那么(
(数据:任何)=>{
log('文件为blob',数据);
常量上载:承诺=
stripe.files.create(
{
文件:{
数据:数据,
名称:fileName,
键入:“图像/jpeg”,
},
目的:“身份证明文件”,
}
);
返回上载。然后(
(文件:任何)=>{
console.log(“文档上传”,文档);
归还文件;
}
).接住(
(_error:any)=>{
console.log('上传文档时出错',_错误);
返回错误;
}
)
}
).接住(
(_error:any)=>{
log('Error with response',_Error);
返回错误;
}
);
}
错误:EROFS:只读文件系统,打开“test.jpg”
然后我的函数停止。我不使用URL。使用admin.storage()访问您的文件
export const uploadFileToStripe = functions.https.onCall(async(data,context)=>{
const bucket = admin.storage().bucket('xyz.appspot.com');
const path = require('path');
const os = require('os');
const fs = require('fs');
const fileName = data['fileName'];
const tempFilePath = path.join(os.tmpdir(), fileName);
await bucket.file(fileName).download({destination:tempFilePath});
console.log('File created at', tempFilePath);
return await stripe.files.create({
purpose: 'identity_document',
file: {
data: fs.readFileSync(tempFilePath),
name: 'fileUploadDoc.png',
type: 'application/octet-stream',
},
});
});
您是从Stripe还是从
getidFile
函数返回错误?根据:修改文件而不是替换文件可能需要标志模式r+,而不是默认模式w
。如果您在这里fs.createWriteStream(“test.jpg”)代码>