记S3上传文件 aws-sdk

1.组件 antd的 Upload组件 移步官网有详细介绍

render(){

...

const props = { //各个参数请移步官网
      name: 'file',//name名称要和后端服务保持一致
      multiple: true,
      showUploadList: true,
      action: '/api/plugin/wiki/uploading',// 接口url
      onChange:this.uploadChange,
      onRemove: this.onUploadRemove,
      listType: 'picture',
      beforeUpload: this.beforeUploadFile,
      defaultFileList: [...this.state.fileList]
    }

}
....


return(
....


<Button>
  <Icon type="cloud-upload" /> 上传附件
</Button>
....



)


2.node controller.js

const AWS = require('aws-sdk');
const LIANJIA_AWS_CONFIG = {
  region: 'cn-north-1',
  s3BucketEndpoint: true,
  s3ForcePathStyle: true,
  endpoint: 'http://storage.xxx.com/'
}

const BUCKET_CONFIG = {
  bucket: 'xxxxxx',//bucket值 需要申请名称 ,不能随意写
  key: {
    accessKeyId: 'xxxxx',
    secretAccessKey: 'xxxxx'
  }
}

const s3 = new AWS.S3(Object.assign({}, LIANJIA_AWS_CONFIG, BUCKET_CONFIG.key))



/**
   * 
   * 附件上传
   * 
   */
  async fileUploading(ctx){
    try {
      // file   name:'file'  与前端的name保持一致
      let files = ctx.request.body.files.file;
      let path = files.path
      const params = {
        Bucket: BUCKET_CONFIG.bucket,
        Key: `${(new Date()).getTime()}-${encodeURIComponent(files.name)}`,
        Body: fs.createReadStream(path),
        //去除前缀的下载链接的文件名 
        ContentDisposition: `attachment; filename=${encodeURIComponent(files.name)}`
      };
      let res =  await s3.upload(params).promise() //异步upload 加promise()
      let options = {
        path: res.Location,
        name: files.name
      }
      //此处为返回值根据使用的框架或插件自行修改
      ctx.body = yapi.commons.resReturn(options);
    } catch (e) {
      //此处为返回值根据使用的框架或插件自行修改
      ctx.body = yapi.commons.resReturn(null, 402, e.message);
    }
  }

 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值