我使用react native和后端是用Prisma和GraphQL(Apollo服務器)構建的。我不將影像資料存盤到 Prisma,而是存盤到aw3.
問題是我想一次將多張圖片上傳到我的應用程式。所以我制作了 Prisma Array [] 的影像列,而不是 String。
但是因為使用aw3,我一次只能上傳一張圖片。因此,即使我將影像列設為陣列,我也無法使用aw3.
當我搜索人們建議 3 個選項以便通過 aw3 上傳多個檔案時。
- 多執行緒
- 多處理
- zip 上傳 (amazon-lambda)
在我的情況下(將檔案上傳為Array),哪個選項最可取?你能教我怎么做嗎?
我的后端代碼:
export const uploadToS3 = async (file, userId, folderName) => {
const { filename, createReadStream } = await file;
const readStream = createReadStream();
const objectName = `${folderName}/${userId}-${Date.now()}-${filename}`;
const { Location } = await new AWS.S3()
.upload({
Bucket: "chungchunonuploads",
Key: objectName,
ACL: "public-read",
Body: readStream,
})
.promise();
return Location;
};
uj5u.com熱心網友回復:
我們需要使用Promise.all. 讓我們重構我們的代碼并將其拆分為 2 個函式。
// Assume that we have list of all files to upload
const filesToUpload = [file1, file2, file3, fileN];
export const uploadSingleFileToS3 = async (file, userId, folderName) => {
const { filename, createReadStream } = await file;
const readStream = createReadStream();
const objectName = `${folderName}/${userId}-${Date.now()}-${filename}`;
const response = await new AWS.S3().upload({
Bucket: "chungchunonuploads",
Key: objectName,
ACL: "public-read",
Body: readStream,
});
return response;
};
const uploadMultipleFilesToS3 = async (filesToUpload, userId, folderName) => {
const uploadPromises = filesToUpload.map((file) => {
return uploadSingleFileToS3(file, userId, folderName);
});
// Array containing all uploaded files data
const uploadResult = await Promise.all(uploadPromises);
// Add logic here to update the database with Prisma ORM
};
// Call uploadMultipleFilesToS3 with all required parameters
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/415540.html
標籤:
