OSS上传文件

这是最近在项目里用到的文件上传,因为原系统将文件存储在独立的服务器上,费用以及维护成本高,所以开始采用OSS文件存储:

- 贴出代码:

public NetState uploadImage(@ApiParam("选择文件")  MultipartFile file) {
        Optional.ofNullable(file).orElseThrow(()->new NetStateException(NetState.FEAILED,"选择文件",null));
        String endpoint = "oss-cn-hangzhou.aliyuncs.com";
        // 阿里云账号AccessKey拥有所有API的访问权限,风险很高。所以创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
        String accessKeyId = "";
        String accessKeySecret = "";
        // 填写Bucket名称,例如examplebucket。
        String bucketName = "haowu-imagefile";
        // 创建OSSClient实例。
        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);

        try {
            String fileType = file.getOriginalFilename().split("\\.")[1];
            String filename = Produce.getUUID()+"."+fileType;
            InputStream inputStream = file.getInputStream();
            //设置请求头直接预览
            ObjectMetadata meta = new ObjectMetadata();
            meta.setContentType("image/jpg");
            PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName,filename,inputStream,meta);
            // 上传文件。
            PutObjectResult putObjectResult = ossClient.putObject(putObjectRequest);
            // 关闭OSSClient。
            ossClient.shutdown();
            //图片访问url
            String url ="https://haowu-imagefile.oss-cn-hangzhou.aliyuncs.com/";
            String imageUrl = url+filename;
            return NetStateUtils.getNetStateS("成功", imageUrl);
        } catch (IOException e) {
            return NetStateUtils.getNetStateF("失败");
        }

    }
  • 上述代码用来上传图片文件,如果要上传视频文件等,调整contentType参数即可,如:
//上传视频文件
meta.setContentType("video/mp4");
//所上传的视频是否可以在线播放
meta.setContentDisposition("inline;filename=" + filename);//表示能在线播放
  • 返参会带回上传文件的访问链接,如下:
    JSON中为图片链接

  • 通用文件上传

@RequestMapping(value = "/uploadAllFile", method = RequestMethod.POST)
	public @ResponseBody
	NetState uploadAllFile(HttpServletRequest request, @RequestParam("file") MultipartFile file)
			throws Exception {

		NetState netState = new NetState();
		// 如果文件不为空,写入上传路径
		if (file.isEmpty()) {
			return NetStateUtils.getNetStateF("请选择文件");
		}
		String fileType = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
		try {
			Optional.ofNullable(file).orElseThrow(() -> new NetStateException(NetState.FEAILED, "选择文件", null));
			String endpoint = "oss-cn-hangzhou.aliyuncs.com";
			// 阿里云账号AccessKey拥有所有API的访问权限,风险很高。所以创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
			String accessKeyId = "";
			String accessKeySecret = "";
			// 填写Bucket名称,例如examplebucket。
			String bucketName = "haowu-imagefile";
			// 创建OSSClient实例。
			OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
			String filename = Produce.getUUID() + "."+fileType;
			InputStream inputStream = file.getInputStream();
			//设置请求头直接预览
			ObjectMetadata meta = new ObjectMetadata();
//            meta.setContentDisposition("inline; filename=" +file.getOriginalFilename());
			PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, filename, inputStream, meta);
			// 上传文件。
			ossClient.putObject(putObjectRequest);
			// 关闭OSSClient。
			ossClient.shutdown();
			//访问url
			String url = "https://haowu-imagefile.oss-cn-hangzhou.aliyuncs.com/";
			String imageUrl = url + filename;
			netState.setErrorCode(NetState.SUCCESS_CONN);
			netState.setData("上传文件成功");

			netState.setJson(imageUrl);

		} catch (Exception e) {
			netState.setErrorCode(NetState.SYSTEM_ERROR);
			netState.setData("上传文件失败");
		}
		Apiinfoes apiinfoes = ApiinfoesHelper.createApiinfoes(request, "上传文件");
		apiinfoesService.insert(ApiinfoesHelper.setApiinfoes(apiinfoes, null, GsonUtil.createJsonString(netState)));
		return netState;
	}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值