腾讯云对象存储的完整教程,java将文件上传到腾讯云上后返回可以访问的连接
先前使用的是七牛云,是挺好用的,但是七牛对于测试域名有一个月的时间限制。测试域名失效后上传的图片等文件就不能访问了。但是腾讯云每个注册的账户有50G的对象存储的空间。而且没有时间限制。所以就采用腾讯的的对象存储。
具体步骤分为以下三步:
①:将文件上传到tomcat下
②:将上传到tomcat下的文件上传到腾讯云对象存储中
③:解析返回的连接,获得可直接访问的连接地址
第一步:
将文件上传到tomcat下,这个就不多说了,这个都玩的不太灵活的同学就暂时先温习下以前存储下来的只是吧。下面我把核心代码的贴上。
// 设置图片名称,不能重复,可以使用uuid
String picName = UUID.randomUUID().toString();
// 获取文件的原始路径这个文件夹是创建在项目下面的自己手动创建
String path = request.getSession().getServletContext().getRealPath("/picture");
picName = picName.replaceAll("-", "");
// 获取文件名
String oriName = pictureFile.getOriginalFilename();
// 获取图片后缀
String extName = oriName.substring(oriName.lastIndexOf("."));
// 整合新的文件名加后缀
String newName = "/" + picName + extName;
// 上传到服务器上的地址
String tomPath = path + newName;
// 开始将文件上传到tomcat的文件目录下
pictureFile.transferTo(new File(path + "/" + newName));
具体的参见上传资源。
第二步:最重要的部分
将在tomcat下的文件上传到腾讯云上。
引入依赖:(此方法必须使用此依赖)
/**
* 特别注意:此版本代码必须使用此依赖
* <!-- 腾讯云上传依赖 -->
* <dependency>
* <groupId>com.qcloud</groupId>
* <artifactId>cos_api</artifactId>
* <version>5.2.4</version>
* </dependency>
* <dependency>
* <groupId>com.qcloud</groupId>
* <artifactId>qcloud-java-sdk</artifactId>
* <version>2.0.1</version>
* </dependency>
*
*/
核心代码:
// 直接传一个路径进来就好啦
File cosFile = new File(tomPath);
// 将密钥配置进去
COSCredentials cred = new BasicCOSCredentials(secretId, secretKey);
// 2 设置bucket的区域, COS地域的简称请参照
ClientConfig clientConfig = new ClientConfig(new Region("ap-guangzhou"));
// 3 获得cos客户端
COSClient cosClient = new COSClient(cred, clientConfig);
//这个需要根据的自己的服务器的情况配置
String bucketName = "XXXXXXXXXX";
// 设置上传文件的存储位置
String key = "image/" + cosFile.getName();
// 简单文件上传, 最大支持 5 GB, 适用于小文件上传, 建议 20 M 以下的文件使用该接口
// 大文件上传请参照 API 文档高级 API 上传
// 指定要上传到 COS 上的路径
PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, key, cosFile);
cosClient.putObject(putObjectRequest);
// 关闭客户端
cosClient.shutdown();
Date expiration = new Date(new Date().getTime() + 5 * 60 * 10000);
URL oldurl = cosClient.generatePresignedUrl(bucketName, key, expiration);
// 获得链接后解析字符串并且返回
// 先将url转换为字符串
第三步:获得上传后的文件的链接
String url = oldurl.toString();
// http://jobpic-1258185724.cos.ap-guangzhou.myqcloud.com/image/T.jpg?sign
// 直接查找到第一个?的位置
url = url.substring(0, url.indexOf("?"));
// 开始解析字符串
return url;
至此文件的上传到腾讯上就完成啦。
下面是我写的完整的代码:仅供参考。
package com.hsd.tx.util;
import java.io.File;
import java.net.URL;
import java.util.Date;
import java.util.UUID;
import javax.servlet.http.HttpServletRequest;
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
*
*/
/**
* 特别注意:此版本代码必须使用此依赖
* <!-- 腾讯云上传依赖 -->
* <dependency>
* <groupId>com.qcloud</groupId>
* <artifactId>cos_api</artifactId>
* <version>5.2.4</version>
* </dependency>
* <dependency>
* <groupId>com.qcloud</groupId>
* <artifactId>qcloud-java-sdk</artifactId>
* <version>2.0.1</version>
* </dependency>
*
*/
// 这个方法是专门用来上传SSM框架下的文件的
// 前提条件是:①:在requestMapper的方法中必须接收HttpServletRequest,MultipartFile作为参数,然后传入此方法中
public class TxFileUploadUtil {
//根据自己实际情况去配置
private static String secretId = "XXXXXXXXXXXXXXXXX";
private static String secretKey = "XXXXXXXXXXXXXXXXX";
public static String upLoadSSM(HttpServletRequest request, MultipartFile pictureFile) throws Exception {
// 设置图片名称,不能重复,可以使用uuid
String picName = UUID.randomUUID().toString();
// 获取文件的原始路径这个文件夹是创建在项目下面的自己手动创建
String path = request.getSession().getServletContext().getRealPath("/picture");
picName = picName.replaceAll("-", "");
// 获取文件名
String oriName = pictureFile.getOriginalFilename();
// 获取图片后缀
String extName = oriName.substring(oriName.lastIndexOf("."));
// 整合新的文件名加后缀
String newName = "/" + picName + extName;
// 上传到服务器上的地址
String tomPath = path + newName;
// 开始将文件上传到tomcat的文件目录下
pictureFile.transferTo(new File(path + "/" + newName));
// 直接传一个路径进来就好啦
File cosFile = new File(tomPath);
// 将密钥配置进去
COSCredentials cred = new BasicCOSCredentials(secretId, secretKey);
// 2 设置bucket的区域, COS地域的简称请参照具体情况;希望引用的时候注意
ClientConfig clientConfig = new ClientConfig(new Region("XXXXXXX"));
// 3 获得cos客户端
COSClient cosClient = new COSClient(cred, clientConfig);
//在腾讯上创建的桶的名称
String bucketName = "XXXXXXX";
// 设置上传文件的存储位置
String key = "image/" + cosFile.getName();
// 简单文件上传, 最大支持 5 GB, 适用于小文件上传, 建议 20 M 以下的文件使用该接口
// 大文件上传请参照 API 文档高级 API 上传
// 指定要上传到 COS 上的路径
PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, key, cosFile);
cosClient.putObject(putObjectRequest);
// 关闭客户端
cosClient.shutdown();
Date expiration = new Date(new Date().getTime() + 5 * 60 * 10000);
URL oldurl = cosClient.generatePresignedUrl(bucketName, key, expiration);
// 获得链接后解析字符串并且返回
// 先将url转换为字符串
String url = oldurl.toString();
// http://jobpic-1258185724.cos.ap-guangzhou.myqcloud.com/image/T.jpg?sign
// 直接查找到第一个?的位置
url = url.substring(0, url.indexOf("?"));
// 开始解析字符串
return url;
}
// 如果是采用其他的方式添加文件则采用此方法
public static String upLoad(String tomPath) throws Exception {
File cosFile = new File(tomPath);
// 将密钥配置进去
COSCredentials cred = new BasicCOSCredentials(secretId, secretKey);
// 2 设置bucket的区域, COS地域的简称请参照
ClientConfig clientConfig = new ClientConfig(new Region("ap-guangzhou"));
// 3 获得cos客户端
COSClient cosClient = new COSClient(cred, clientConfig);
String bucketName = "jobpic-1258185724";
// 设置上传文件的存储位置
String key = "image/" + cosFile.getName();
// 简单文件上传, 最大支持 5 GB, 适用于小文件上传, 建议 20 M 以下的文件使用该接口
// 大文件上传请参照 API 文档高级 API 上传
// 指定要上传到 COS 上的路径
PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, key, cosFile);
cosClient.putObject(putObjectRequest);
// 关闭客户端
cosClient.shutdown();
Date expiration = new Date(new Date().getTime() + 5 * 60 * 10000);
URL oldurl = cosClient.generatePresignedUrl(bucketName, key, expiration);
// 获得链接后解析字符串并且返回
// 先将url转换为字符串
String url = oldurl.toString();
// http://jobpic-1258185724.cos.ap-guangzhou.myqcloud.com/image/T.jpg?sign
// 直接查找到第一个?的位置
url = url.substring(0, url.indexOf("?"));
// 开始解析字符串
return url;
}
}
- [置顶] 腾讯云 对象储存java实现COS文件上传与返回的URL
- 腾讯云cos对象存储服务文件上传api就是一个大坑
- 阿里云 javascript上传文件(图片、视频、压缩包等文件)到 对象存储 OSS ,返回上传文件、图片、音频、视频等URL路径
- 文件上传,带其他非文件参数,返回文件可以访问的本地地址
- 什么是序列化?一句话:就是将java对象固化成文件存起来,这样就java对象就被固话了,可以任意的存储和网络传输了,而java对象是暂时存在内存里的,是没办法传输的,因为是虚拟的,并不是实实在在的文件
- 上传文件到阿里云OSS对象存储,查询访问地址,删除文件
- android 文件上传的类--完整 可以直接被调用的
- java做的比较完善的FTP连接上传下载文件
- java 通过SSH方式连接远程主机并上传和下载文件
- JAVA连接FTP服务器,并上传/下载文件代码
- 获取一个想要的指定文件的集合,获取文件夹下(包含子目录的所有.java的文件对象,并存储到集合中)
- 使用Java序列化把对象存储到文件中,再从文件中读出来
- ftp文件上传,可以上传至非根目录的指定目录,并解决文件中文无法上传问题,返回文件路径
- java 上传文件代码,支持中文文件名和中文文件内容,可以同时提交多个参数
- javascript有个特殊的对象ActiveXObject,通过它可以访问windows的本地文件系统和应用程序
- 百度富文本编辑器ueditor上传文件到对象存储BOS中
- linux搭建smb文件共享服务,java上传文件共享服务器,tomcat端口直接访问
- 阿里云对象存储OSS--实现随时随地上传文件到阿里云
- OSS阿里云对象存储服务,java文件操作
- java基础教程-对象的传递与返回