Java后台上传图片到七牛云
一:
看某马的培训视频,要用到fastdfs,配置起来挺麻烦,于是决定自己弄一个图片服务器,因为之前做安卓项目的时候用过七牛云的SDK感觉挺ok
,于是改用七牛云。使用七牛云的对象存储,需要一个备案的域名,用来绑定存储空间,如果只是短时间用,七牛云倒是会提供一个30天的临时
域名。以自己的域名加一个前缀,比如media.XXX.cn之后会获得一个CNAME,然后在域名厂商的控制台添加解析,比如我是在阿里云买的:
这样就能使用了,访问图片就是medis.XXX.cn/example.jpg
二:
接下来到后台传送模块的编写。
添加七牛云依赖到pom(建议使用官方文档推荐的版本)
<dependency> <groupId>com.qiniu</groupId> <artifactId>qiniu-java-sdk</artifactId> <version>[7.2.0, 7.2.99]</version> </dependency>
由于Spring接收文件的类型是MultipartFile,需要先转成File文件。
//File代入参数是临时文件的目录,在磁盘新建一个空文件就行,否则好像会报异常。 File file = new File("C:\\test");
//uploadFile是MultipartFile对象 uploadFile.transferTo(file); //得到图片的url String url = QiniuCloudUtil.upload(file, preName); //生成的文件会存在本地,我这里选择删除它 file.delete();
工具如下,不复杂:
import java.io.File; import java.io.IOException; import com.qiniu.common.QiniuException; import com.qiniu.common.Zone; import com.qiniu.http.Response; import com.qiniu.storage.Configuration; import com.qiniu.storage.UploadManager; import com.qiniu.util.Auth; import org.springframework.util.StringUtils; /** * @author yintianhao * @createTime 07 21:07 * @description 七牛云工具 */ public class QiniuCloudUtil { // 设置需要操作的账号的AK和SK private static final String ACCESS_KEY = "*******"; private static final String SECRET_KEY = "*******"; // 要上传的空间名 private static final String bucketname = "****"; // 密钥 private static final Auth auth = Auth.create(ACCESS_KEY, SECRET_KEY); //上传 public static String upload(File file, String key) throws IOException{ // 创建上传对象,Zone*代表地区 Configuration configuration = new Configuration(Zone.zone2()); UploadManager uploadManager = new UploadManager(configuration); try { // 调用put方法上传 String token = auth.uploadToken(bucketname); if(StringUtils.isEmpty(token)) { System.out.println("未获取到token,请重试!"); return null; } print("File name = "+file.getName()); Response res = uploadManager.put(file,key,token); // 打印返回的信息 if (res.isOK()){ return key; } }catch (QiniuException e) { Response r = e.response; // 请求失败时打印的异常的信息 e.printStackTrace(); System.out.println("error "+r.toString()); try { // 响应的文本信息 System.out.println(r.bodyString()); } catch (QiniuException e1) { System.out.println("error "+e1.error()); } } return null; } }
end。