栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java上传文件到ucloud对象存储上

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java上传文件到ucloud对象存储上

        使用uclpud对象存储存储文件,比如excel、pdf、png等,这里讲述一下完整的一套使用流程。

        官方文档说明:https://github.com/ucloud/ufile-sdk-java

        首先在ucloud对象存储中建立存储空间并设置存储空间域名:

         创建完毕后进入文件管理,创建需要的文件目录:

         然后创建令牌,令牌主要是Java调用的时候用以验证使用:

 

         创建完毕可以查看公钥和私钥。

        接下来进行一套流程的代码编写,包括Controller层,service层、web层:

        引入pom.xml依赖:


  cn.ucloud.ufile
  ufile-client-java
  2.4.4

        编写Controller层:

import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import net.mingsoft.base.entity.ResultData;
import net.mingsoft.basic.action.baseFileAction;
import net.mingsoft.basic.annotation.LogAnn;
import net.mingsoft.basic.constant.e.BusinessTypeEnum;
import net.mingsoft.cms.biz.IUcloudProviderService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;


@Controller("ucloudUpload")
@RequestMapping("/ucloud")
@Scope("request")
public class UcloudUploadController extends baseFileAction{
    @Autowired
    private IUcloudProviderService ucloudProviderService;

    @ApiOperation(value = "ucloud上传文件")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "request", value = "表单信息", required =true,paramType="query"),
    })
    @LogAnn(title = "上传文件", businessType = BusinessTypeEnum.UPDATe)
    @PostMapping("/upload")
    @ResponseBody
    public ResultData upload(HttpServletRequest req, HttpServletResponse res) throws IOException {
        MultipartHttpServletRequest multipartRequest =
                (MultipartHttpServletRequest)req;
        MultipartFile file = multipartRequest.getFile("file");
        String url = ucloudProviderService.upload(file.getInputStream(), file.getContentType(), file.getOriginalFilename());

        return ResultData.build().success(url);
    }

}

        Service层:

import java.io.InputStream;


public interface IUcloudProviderService {
    String upload(InputStream inputStream, String mimeType, String fileName);
}
import cn.ucloud.ufile.UfileClient;
import cn.ucloud.ufile.api.object.ObjectConfig;
import cn.ucloud.ufile.auth.ObjectAuthorization;
import cn.ucloud.ufile.auth.UfileObjectLocalAuthorization;
import cn.ucloud.ufile.bean.PutObjectResultBean;
import cn.ucloud.ufile.exception.UfileClientException;
import cn.ucloud.ufile.exception.UfileServerException;
import net.mingsoft.cms.biz.IUcloudProviderService;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.io.InputStream;
import java.util.UUID;


@Service
public class UcloudProviderServiceImpl implements IUcloudProviderService {
    @Value("${ucloud.ufile.publickey}")
    private String publicKey;
    @Value("${ucloud.ufile.privatekey}")
    private String privateKey;
    // bucketName指存储空间,即域名前的那个名称
    @Value("${ucloud.bucketName}")
    private String bucketName;


    public String upload(InputStream inputStream, String mimeType,String fileName){
        String newName = "";
        String[] split = fileName.split("\.");
        if(split.length>1){
            newName =UUID.randomUUID()+"."+split[split.length-1];
        }else {
            return null;
        }

        try {
            // 这里指创建的目录
            String ServerFileName = "test-file/" + newName;
            // Bucket相关API的授权器
            ObjectAuthorization objectAuthorization = new UfileObjectLocalAuthorization(publicKey,privateKey);
            // 对象操作需要ObjectConfig来配置您的地区和域名后缀
            ObjectConfig config = new ObjectConfig("cn-sh2", "ufileos.com");
            PutObjectResultBean response = UfileClient.object(objectAuthorization, config)
                    .putObject(inputStream, mimeType)
                    .nameAs(ServerFileName)
                    .toBucket(bucketName)
                    .setonProgressListener((bytesWritten, contentLength) -> { })
                    .execute();
            if(response!=null && response.getRetCode() == 0 ){
                String url = UfileClient.object(objectAuthorization, config)
                        .getDownloadUrlFromPrivateBucket(ServerFileName, bucketName, 24 * 60 * 60)
                        .createUrl();
                return url;
            }else {
                return "文件上传失败";
            }
        } catch (UfileClientException e) {
            e.printStackTrace();
            return null;
        } catch (UfileServerException e) {
            e.printStackTrace();
            return null;
        }
    }
}

         在yaml文件中配置ucloud令牌信息:

ucloud:
  bucketName: test
  ufile:
    publickey: xxxxxxxxxxxxxxxxxxxx
    privatekey: xxxxxxxxxxxxxx

        web层:




    
    Title



ucloud上传

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/704848.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号