阿里云提供了存储图片的oss服务,下面是java中在首页spring的时候,如何将oss的给你对接到程序中
首先你得在阿里云购买oss服务
<body>
<form:form action="/addMyPicture">
<img id="image" src="">
<span>选择文件</span>
<input type="file" id="file" required="required"><br>
<span>描述</span>
<textarea id="description" required="required"></textarea>
<input type="submit" name="提交" onclick="addMyPicture()">
</form:form>
</body>
2.js
function addMyPicture() {
var imageUrl = $("#image")[0].src;
if(imageUrl == null || imageUrl == "" || imageUrl == undefined){
alert("图片不存在");
return;
}else {
imageUrl = imageUrl;
}
var data = {
'url': imageUrl,
'description' : $("#description").val()
}
postWithLoadingMask("/addMyPicture",data,function (res) {
if(res.status == 1){
console.log("success");
alert("result->:"+res);
}
},function (error) {
console.log("error",error);
});
}
3.后台代码
@RequestMapping(value ="upload",method = RequestMethod.POST)
public String upload(HttpServletRequest req, HttpServletResponse res){
String imageUrl = "/images";
String realsavepath = req.getSession().getServletContext().getRealPath(imageUrl);
File savedir = new File(realsavepath);
// 如果目录不存在就创建
if (!savedir.exists()) {
savedir.mkdirs();
}
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) req;
MultipartFile multipartFile = multipartRequest.getFile("file");
String suffix = multipartFile.getOriginalFilename().substring(multipartFile.getOriginalFilename().lastIndexOf("."));
String logImageName = UUID.randomUUID().toString()+suffix;// 构建文件名称
/** 拼成完整的文件保存路径加文件* */
String fileName = realsavepath + File.separator + logImageName;
File file = new File(fileName);
try {
multipartFile.transferTo(file);
fileName= fileUploadHelper.uploadObject2OSS(file);
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return fileName;
}
4.上传部分代码
package com.hyc.util;
import com.aliyun.oss.OSSClient;
import com.aliyun.oss.model.ObjectMetadata;
import com.aliyun.oss.model.PutObjectRequest;
import com.aliyun.oss.model.PutObjectResult;
import org.springframework.stereotype.Service;
import java.io.*;
import java.util.UUID;
@Service
public class FileUploadHelper {
//阿里云API的内或外网域名
private static String ENDPOINT;
//阿里云API的密钥Access Key ID
private static String ACCESS_KEY_ID;
//阿里云API的密钥Access Key Secret
private static String ACCESS_KEY_SECRET;
// BUCKET
private static String BUCKETNAME;
//图片文件夹
private static String PREFIX;
//图片网址
private static String DOMAIN;
static {
ENDPOINT = "地区"; //如 oss-ap-southeast-1.aliyuncs.com
BUCKETNAME = "bucketName"; // 你在阿里云建的bucket Name
ACCESS_KEY_ID = "key_id"; // 自己的Key
ACCESS_KEY_SECRET = "key_value";// 自己的Key-VALUE
PREFIX = "images/";
DOMAIN = "域名";
}
public static final OSSClient getOSSClient(){
return new OSSClient(ENDPOINT,ACCESS_KEY_ID, ACCESS_KEY_SECRET) ;
}
public static final String uploadObject2OSS(File file) {
OSSClient client = getOSSClient();
String resultStr = null;
try {
InputStream is = new FileInputStream(file);
String fileName = file.getName();
Long fileSize = file.length();
//创建上传Object的Metadata
ObjectMetadata metadata = new ObjectMetadata();
metadata.setContentLength(is.available());
metadata.setCacheControl("no-cache");
metadata.setHeader("Pragma", "no-cache");
metadata.setContentEncoding("utf-8");
metadata.setContentType(getContentType(fileName));
metadata.setContentDisposition("filename/filesize=" + fileName + "/" + fileSize + "Byte.");
//上传文件
PutObjectRequest request = new PutObjectRequest(BUCKETNAME, PREFIX + fileName, is, metadata);
client.putObject(request);
resultStr = DOMAIN+"/"+PREFIX+ fileName;
} catch (Exception e) {
e.printStackTrace();
}
return resultStr;
}
/**
* 通过文件名判断并获取OSS服务文件上传时文件的contentType
* @param fileName 文件名
* @return 文件的contentType
*/
public static final String getContentType(String fileName){
String fileExtension = fileName.substring(fileName.lastIndexOf("."));
if(".bmp".equalsIgnoreCase(fileExtension)) return "image/bmp";
if(".gif".equalsIgnoreCase(fileExtension)) return "image/gif";
if(".jpg".equalsIgnoreCase(fileExtension)) return "image/jpg";
if(".png".equalsIgnoreCase(fileExtension)) return "image/png";
if(".jpeg".equalsIgnoreCase(fileExtension)) return "image/jpeg";
if(".html".equalsIgnoreCase(fileExtension)) return "text/html";
if(".txt".equalsIgnoreCase(fileExtension)) return "text/plain";
if(".vsd".equalsIgnoreCase(fileExtension)) return "application/vnd.visio";
if(".ppt".equalsIgnoreCase(fileExtension) || "pptx".equalsIgnoreCase(fileExtension)) return "application/vnd.ms-powerpoint";
if(".doc".equalsIgnoreCase(fileExtension) || "docx".equalsIgnoreCase(fileExtension)) return "application/msword";
if(".xml".equalsIgnoreCase(fileExtension)) return "text/xml";
return "text/html";
}
}