加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

斯卡拉 – 玩!上传文件并保存到AWS S3

发布时间:2020-12-16 08:44:20 所属栏目:安全 来源:网络整理
导读:我正在使用Play 2.3并希望将上传的文件存储到S3,因此我使用Play-S3模块. 但是,我遇到了困难,因为我需要使用此模块创建一个BucketFile上传到S3,并在文件内存中使用Array [Byte]创建BucketFile.表演! body解析器给我一个临时的光盘文件.如何将此文件放入Bucke
我正在使用Play 2.3并希望将上传的文件存储到S3,因此我使用Play-S3模块.

但是,我遇到了困难,因为我需要使用此模块创建一个BucketFile上传到S3,并在文件内存中使用Array [Byte]创建BucketFile.表演! body解析器给我一个临时的光盘文件.如何将此文件放入BucketFile?

这是我的控制器动作:

def upload = Action.async(parse.multipartFormData) { implicit request =>
    request.body.file("file").map{ file =>
      implicit val credential = AwsCredentials.fromConfiguration
      val bucket = S3("bucketName")
      val result = bucket + BucketFile(file.filename,file.contentType.get,file.ref.file.toString.getBytes)
      result.map{ unit =>
        Ok("File uploaded")
      }
    }.getOrElse {
      Future.successful {
        Redirect(routes.Application.index).flashing(
          "error" -> "Missing file"
        )
      }
    }
  }

此代码不起作用,因为file.ref.file.toString()并不真正返回文件的字符串表示形式.

解决方法

导入以下内容:

import java.nio.file.{Paths,Files}

要创建数组[Byte],请执行以下操作:

val byteArray = Files.readAllBytes(Paths.get(file.ref.file.getPath))

然后上传:

BucketFile(file.filename,byteArray,None,None)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读