第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

使用 AdonisJS 5 的文件存儲(chǔ) (S3)

使用 AdonisJS 5 的文件存儲(chǔ) (S3)

躍然一笑 2022-12-29 15:51:35
在 AdonisJS v4 文檔中,我們有這一部分解釋如何將文件流式傳輸?shù)?S3 存儲(chǔ)桶。我在 AdonisJS v5 文檔中尋找類似的東西,但它只是一個(gè)如何將文件上傳到本地服務(wù)器的示例。如果它還沒(méi)有準(zhǔn)備好,因?yàn)?Adonis 5 不是它的最新版本,這是通過(guò) Adonis v5(特別是打字稿)將文件上傳到 S3 的另一種方式?
查看完整描述

3 回答

?
白板的微信

TA貢獻(xiàn)1883條經(jīng)驗(yàn) 獲得超3個(gè)贊

我找到了一種使用 aws-sdk 執(zhí)行此操作的方法,此代碼并非 100% 我的代碼:


uploadToS3Bucket功能:


import * as AWS from "aws-sdk";

import { v4 as uuid } from "uuid";



const s3 = new AWS.S3({

  region: process.env.AWS_REGION,

  secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY,

  accessKeyId: process.env.AWS_ACCESS_KEY_ID,

});


export const uploadToS3Bucket = async (

  file: any,

  bucket: string

): Promise<{ key: string; url: string }> => {

  try {

    const { type, subtype, extname } = file;

    let mimeType = type + "/" + subtype;


    let fileType = "image/jpg";


    const name = uuid() + "." + extname;


    let buffer = Buffer.from(JSON.stringify(file), "utf-8");


    await s3

      .putObject({

        Key: name,

        Bucket: bucket,

        ContentType: fileType,

        Body: buffer.toString("base64"),

        ACL: "public-read",

      })

      .promise();


    let url = `https://${bucket}.s3.amazonaws.com/${name}`;

    console.log(url);

    return {

      key: name,

      url,

    };

  } catch (err) {

    console.log(err);

    return err;

  }

};

在控制器中:


public async store({ request }: HttpContextContract) {

  let file = getFileFromRequest(request, "defined_file_prop_name_here");


  if (file) {

    await uploadToS3Bucket(file, BUCKET_NAME);

  }

}


查看完整回答
反對(duì) 回復(fù) 2022-12-29
?
慕俠2389804

TA貢獻(xiàn)1719條經(jīng)驗(yàn) 獲得超6個(gè)贊

Adonis 4 使用flydrive來(lái)實(shí)現(xiàn) s3 存儲(chǔ),您也可以使用它來(lái)簡(jiǎn)化和節(jié)省時(shí)間。使用 flydrive 配置和實(shí)例化后非常簡(jiǎn)單

// Supported drivers: "local", "s3", "gcs"
await storage.disk('s3').put('testfile.txt', 'filecontents');


查看完整回答
反對(duì) 回復(fù) 2022-12-29
?
牧羊人nacy

TA貢獻(xiàn)1862條經(jīng)驗(yàn) 獲得超7個(gè)贊

您可以在沒(méi)有 ACL 權(quán)限問(wèn)題的情況下使用它


不要忘記安裝 S3 驅(qū)動(dòng)器:https ://docs.adonisjs.com/guides/drive


多個(gè)圖像的示例:


import Route from '@ioc:Adonis/Core/Route'

import Drive from '@ioc:Adonis/Core/Drive'

import fs from 'fs'

import path from 'path'

import { string } from '@ioc:Adonis/Core/Helpers'


Route.post('upload', async ({ request }) => {


   const images = request.files('images')

   for (let image of images) {

      if (image !== null) {

         const slugFileName = string.camelCase(path.parse(image.clientName).name).toLowerCase();


         const fileName = `${slugFileName}.${image.extname}`

         const fileStream = fs.createReadStream(image.tmpPath!)


         await Drive.putStream(fileName, fileStream, {

            contentType: image.headers['content-type']

         })

      }

   }

})

如果要上傳單張圖片:


Route.post('upload', async ({ request }) => {


   const image = request.file('image')

      if (image !== null) {

         const slugFileName = string.camelCase(path.parse(image.clientName).name).toLowerCase();


         const fileName = `${slugFileName}.${image.extname}`

         const fileStream = fs.createReadStream(image.tmpPath!)


         await Drive.putStream(fileName, fileStream, {

            contentType: image.headers['content-type']

         })

      }

})


查看完整回答
反對(duì) 回復(fù) 2022-12-29
  • 3 回答
  • 0 關(guān)注
  • 134 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)