腾讯云对象存储实现文件上传下载
1.一共分三步 配置 工具类 接口调用
2.配置
#腾讯云COS存储 tencentCosUtil: #开发者拥有的项目身份识别 ID,用于身份认证,可在 API 密钥管理 页面获取 secretId: #开发者拥有的项目身份密钥,可在 API 密钥管理 页面获取 secretKey: #存储桶名称格式,用户在使用 API、SDK 时,需要按照此格式填写存储桶名称 bucket: book-borrowing-1308110037 #存储桶配置管理中访问域名的URL(格式:https://bucketName.cos.所在地域(例如:ap-nanjing).myqcloud.com/) accessUrl: https://book-borrowing-1308110037.cos.ap-chengdu.myqcloud.com/ region: ap-chengdu
3.工具类
package cn.abtu.config; import java.awt.image.BufferedImage; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileOutputStream; import java.net.URL; import java.text.SimpleDateFormat; import java.util.Date; import java.util.UUID; import javax.imageio.ImageIO; import javax.servlet.http.HttpServletRequest; import com.qcloud.cos.http.HttpProtocol; import org.apache.commons.lang3.RandomStringUtils; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import org.springframework.web.multipart.MultipartFile; import com.qcloud.cos.COSClient; import com.qcloud.cos.ClientConfig; import com.qcloud.cos.auth.BasicCOSCredentials; import com.qcloud.cos.auth.COSCredentials; import com.qcloud.cos.model.PutObjectRequest; import com.qcloud.cos.region.Region; /** * @ClassName: TxFileUploadUtil * @Description: 腾讯云图片上传的工具类 * @date 2019年1月19日 下午3:46:36 * @author lpjz@foxmail.com * */ @Component public class TencentCosUtil { private static String secretId; private static String secretKey; private static String bucket; private static String accessUrl; @Value("${tencentCosUtil.secretId}") public void setSecretId(String secretId) { this.secretId = secretId; } @Value("${tencentCosUtil.secretKey}") public void setSecretKey(String secretKey) { this.secretKey = secretKey; } @Value("${tencentCosUtil.bucket}") public void setBucketName(String bucket) { this.bucket = bucket; } @Value("${tencentCosUtil.accessUrl}") public void setAccessUrl(String accessUrl) { this.accessUrl = accessUrl; } /** * 上传文件 * * @param fileMul * @return * @throws Exception */ public static String uploadFile(MultipartFile fileMul) throws Exception { //临时文件路径(自定义) String temporaryFile = "image"; //效验临时文件是否存在 File localFile = new File(temporaryFile); if (!localFile.exists()) { //临时文件不存在,创造临时文件 localFile.mkdirs(); } //创造临时文件名称 String fileName = fileMul.getOriginalFilename(); String name = "/" RandomStringUtils.randomNumeric(6) System.currentTimeMillis() System.nanoTime() RandomStringUtils.randomNumeric(6) fileName.substring(fileName.lastIndexOf('.')); //创造临时文件图片 temporaryFile = temporaryFile name; FileOutputStream fos; fos = new FileOutputStream(temporaryFile); fos.write(fileMul.getBytes()); fos.flush(); fos.close(); // 使用COS File file = new File(temporaryFile); // 1 初始化用户身份信息(secretId, secretKey)。 // SECRETID和SECRETKEY请登录访问管理控制台 https://console.cloud.tencent.com/cam/capi 进行查看和管理 COSCredentials cred = new BasicCOSCredentials(secretId, secretKey); // 2 设置 bucket 的地域, COS 地域的简称请参照 https://cloud.tencent.com/document/product/436/6224 // clientConfig 中包含了设置 region, https(默认 http), 超时, 代理等 set 方法, 使用可参见源码或者常见问题 Java SDK 部分。 Region region = new Region("ap-chengdu"); ClientConfig clientConfig = new ClientConfig(region); // 这里建议设置使用 https 协议 // 从 5.6.54 版本开始,默认使用了 https clientConfig.setHttpProtocol(HttpProtocol.https); // 3 生成 cos 客户端。 COSClient cosClient = new COSClient(cred, clientConfig); //格式化时间 SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); // sdf.format(new Date()) name PutObjectRequest putObjectRequest = new PutObjectRequest(bucket, temporaryFile , file); System.out.println(bucket); cosClient.putObject(putObjectRequest); String saveUrl = accessUrl putObjectRequest.getKey(); // 删除用户上传临时文件 File localImgFile = new File(temporaryFile); localImgFile.delete(); return saveUrl; } public static String uploadFileByte(BufferedImage bufferedImage) throws Exception { ByteArrayOutputStream out = new ByteArrayOutputStream(); ImageIO.write(bufferedImage, "png", out); //临时文件路径(自定义) String temporaryFile = "image"; //效验临时文件是否存在 File localFile = new File(temporaryFile); if (!localFile.exists()) { //临时文件不存在,创造临时文件 localFile.mkdirs(); } //创造临时文件名称 String fileName = "base.png"; String name = "/" RandomStringUtils.randomNumeric(6) System.currentTimeMillis() System.nanoTime() RandomStringUtils.randomNumeric(6) fileName.substring(fileName.lastIndexOf('.')); //创造临时文件图片 temporaryFile = temporaryFile name; FileOutputStream fos; fos = new FileOutputStream(temporaryFile); fos.write(out.toByteArray()); fos.flush(); fos.close(); // 使用COS File file = new File(temporaryFile); // 1 初始化用户身份信息(secretId, secretKey)。 // secretId = "AKIDwJmFiXUVRxDOYXcnAYwEOdjmy4zgBc5d"; // secretKey = "fJwgddaSMet7nfWOQaAf5KqRMBL09Obn"; // bucket = "book-borrowing-1308110037"; // accessUrl = "https://book-borrowing-1308110037.cos.ap-chengdu.myqcloud.com/"; // SECRETID和SECRETKEY请登录访问管理控制台 https://console.cloud.tencent.com/cam/capi 进行查看和管理 COSCredentials cred = new BasicCOSCredentials(secretId, secretKey); // 2 设置 bucket 的地域, COS 地域的简称请参照 https://cloud.tencent.com/document/product/436/6224 // clientConfig 中包含了设置 region, https(默认 http), 超时, 代理等 set 方法, 使用可参见源码或者常见问题 Java SDK 部分。 Region region = new Region("ap-chengdu"); ClientConfig clientConfig = new ClientConfig(region); // 这里建议设置使用 https 协议 // 从 5.6.54 版本开始,默认使用了 https clientConfig.setHttpProtocol(HttpProtocol.https); // 3 生成 cos 客户端。 COSClient cosClient = new COSClient(cred, clientConfig); //格式化时间 SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); // sdf.format(new Date()) name PutObjectRequest putObjectRequest = new PutObjectRequest(bucket, temporaryFile , file); System.out.println(bucket); cosClient.putObject(putObjectRequest); String saveUrl = accessUrl putObjectRequest.getKey(); // 删除用户上传临时文件 File localImgFile = new File(temporaryFile); localImgFile.delete(); return saveUrl; } }
3.接口调用
/** * 上传文件处理 * @param file * @return * @throws Exception */ @PostMapping("/uploadFile") public JSONResult uploadFile(@RequestPart("file") List<MultipartFile> file) throws Exception { System.err.println(file); ArrayList<String> list = new ArrayList<>(); for (MultipartFile multipartFile : file) { String s = TencentCosUtil.uploadFile(multipartFile); list.add(s); } // TxFileUploadUtil.upLoad(file); return JSONResult.success(list); }
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgakkkc
系列文章
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13