Java上传文件到ucloud对象存储上
使用uclpud对象存储存储文件,比如excel、pdf、png等,这里讲述一下完整的一套使用流程。
官方文档说明:https://github.com/ucloud/ufile-sdk-java
首先在ucloud对象存储中建立存储空间并设置存储空间域名:
创建完毕后进入文件管理,创建需要的文件目录:
然后创建令牌,令牌主要是Java调用的时候用以验证使用:
创建完毕可以查看公钥和私钥。
接下来进行一套流程的代码编写,包括Controller层,service层、web层:
引入pom.xml依赖:
<dependency><groupId>cn.ucloud.ufile</groupId><artifactId>ufile-client-java</artifactId><version>2.4.4</version>
</dependency>
编写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{@Autowiredprivate IUcloudProviderService ucloudProviderService;@ApiOperation(value = "ucloud上传文件")@ApiImplicitParams({@ApiImplicitParam(name = "request", value = "表单信息", required =true,paramType="query"),})@LogAnn(title = "上传文件", businessType = BusinessTypeEnum.UPDATE)@PostMapping("/upload")@ResponseBodypublic 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: testufile:publickey: xxxxxxxxxxxxxxxxxxxxprivatekey: xxxxxxxxxxxxxx
web层:
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><h4>ucloud上传</h4>
<form action="/ucloud/upload" method="post" enctype="multipart/form-data"><p><input type="file" name="file"></p><p><input type="submit" value="提交"></p>
</form></body>
</html>
Java上传文件到ucloud对象存储上相关推荐
- 上传文件到云服务器存储路径,上传文件到云服务器存储路径
上传文件到云服务器存储路径 内容精选 换一换 云容器引擎需要与其他云服务协同工作,云容器引擎需要获取如下云服务资源的权限. 一个存储库只可以绑定一个备份策略.一个存储库只可以绑定一个复制策略.一个存储 ...
- ajax 上传文件实例,JavaScript使用Ajax上传文件的示例代码
本文介绍了JavaScript使用Ajax上传文件的示例代码,分享给大家,具体如下: 实现文件的上传主要有两种方式: 使用form表单提交上传 html代码如下: 上传 此时的JavaScript代码 ...
- vue method ajax上传文件,前端上传文件追根溯源_和_antd_vue上传文件实例
背景 平,过现前个能文使近记接的端问对字用近记接时工作中经常会遇到需要上传文件的情况,如果你用ant design 或者element ,它们都提供了上传的组件. 我们分别来看一下element 和 ...
- php 手机网站上传文件,HTML5的 input:file上传类型控制,html5手机上传图片调用API。...
调用摄像.视频 调用语音 调用相机 调用相机 图片或者相册 一.input:file属性 属性值有以下几个比较常用: accept:表示可以选择的文件MIME类型,多个MIME类型用英文逗号分开,常用 ...
- input type='file' 上传文件时显示文件名及上传进度
https://blog.csdn.net/qq_36687640/article/details/78551217 1.input type='file' 上传文件时显示文件名及上传进度 <i ...
- QQ群、讨论组上传文件,由于网络原因上传失败?
QQ群.讨论组上传文件,由于网络原因上传失败? 听语音 | 浏览:194 | 更新:2016-10-29 14:17 | 标签:软件 电脑 1 2 3 4 分步阅读 QQ群.讨论组上传文件,总是由于网 ...
- python post 上传文件_Python通过POST方式上传文件及提交参数到远程服务器
前言 在树莓派开发过程中,因为没有公网IP,为了方便访问获取信息,有时候我们需要将树莓派获取到的一些数据或文件上传到云端服务器.这是一个比较简便的方法. Python代码 需要用到requests库, ...
- 解决QQ群、讨论组上传文件,由于网络原因上传失败?
最近qq上传群文件老是失败,但是同事他们可以,目前已经解决QQ群.讨论组上传文件,由于网络原因上传失败?,做法如下: 输入regedit,打开注册表,然后找到这个位置HKEY_CURRENT_USER ...
- Java实现将文件(图片)上传到七牛云对象存储,并实现下载和删除功能
引言:在搭建项目时如果把上传的文件存储在该项目运行的主机上,会导致访问该项目时加载非常缓慢,因此需要对象存储.并且对象存储具有网站数据动静分离,大幅提升网页性能,储存节点多,支持跨地域实时同步,成本低 ...
最新文章
- 【Unity】使用Resources类管理资源
- U3D+SVN: 两份相同资源放在不同目录下导致META的更改
- python控制台执行代码字符串_编写Python脚本以使用控制台命令执行
- jQuery事件整合
- 基于javaSpringboot+mybatis+layui的装修验收管理系统设计和实现
- 输出三角形字符阵列 (15 分)
- Redis命令参考【EXPIRE】
- RDS SQL Server死锁(Deadlock)系列之四利用Service Broker事件通知捕获死锁
- 微信小程序使用默认字体
- NUC1131 Triangle【DP】
- 高质量技术文章哪里看?数据人必看的优质公众号
- DropDownList 数据绑定
- QCC3003x BLE 设置私有地址
- 计算机3d相册代码,CSS3实现3D旋转相册(示例代码)
- 适合计算机课堂玩的游戏,学校上信息课经常玩的几个游戏,你玩过几个?(一)...
- win7桌面计算机丢失,W7电脑系统msvcp120.dll丢失的解决方法
- CCNP精粹系列之二十九--发布bgp子网信息,推荐
- WebView部分源码概览
- UE4 SceneCapture2D显示人物模型时过滤背景颜色或天空盒
- zabbix配置邮件和微信部署