本文主要以 qiniu-java-sdk:7.2.3配置为准;
用到jar包:
commons-fileupload-1.2.1.jar
commons-io-1.3.2.jar
gson-2.2.4.jar
okhttp-3.2.0.jar
okio-1.6.0.jar
qiniu-java-sdk-7.2.3.jar
package com.dingfeng.qiniu; import java.io.File; 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;
/** * 七牛上传的配置 * @author Administrator * */
public class QiNiu { //设置好账号的ACCESS_KEY和SECRET_KEY private final String ACCESS_KEY = "************FzN9r3xo5"; private final String SECRET_KEY = "*****************kFRmQ"; //要上传的空间 private final String bucketname = "image"; /** * 上传文件到七牛 * @param file 文件 fileName 要上传到七牛的文件名 * @return flag true上传成功 false上传失败 */ public boolean upload(File file, String fileName){ boolean flag = true; //要上传的空间(bucket)的存储区域为华东时 Zone z = Zone.zone0(); //密钥配置 Configuration c = new Configuration(z); Auth auth = Auth.create(ACCESS_KEY, SECRET_KEY); UploadManager uploadManager = new UploadManager(c); try { Response response = uploadManager.put(file, fileName, auth.uploadToken(bucketname)); } catch (QiniuException e) { flag = false; e.printStackTrace(); } return flag; } /** * 上传文件到七牛 * @param data 文件字节数组 fileName 要上传到七牛的文件名 * @return flag true上传成功 false上传失败 */ public boolean upload(byte[] data, String fileName){ boolean flag = true; //要上传的空间(bucket)的存储区域为华东时 Zone z = Zone.zone0(); //密钥配置 Configuration c = new Configuration(z); Auth auth = Auth.create(ACCESS_KEY, SECRET_KEY); UploadManager uploadManager = new UploadManager(c); try { Response response = uploadManager.put(data, fileName, auth.uploadToken(bucketname)); } catch (Exception e) { flag = false; e.printStackTrace(); } return flag; } }
import java.io.IOException;import java.text.SimpleDateFormat;import java.util.Date;import java.util.List;import java.util.UUID;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.commons.fileupload.FileItem;import org.apache.commons.fileupload.FileUploadException;import org.apache.commons.fileupload.disk.DiskFileItemFactory;import org.apache.commons.fileupload.servlet.ServletFileUpload;
/**
* 上传文件的servlet
* @author Administrator
*
*/
public class UploadServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String method = request.getParameter("method");
if(method.equals("upload")){
this.upload(request, response);
}
}
public void upload(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
request.setCharacterEncoding("utf-8");
try {
//1创建ItemFactory
DiskFileItemFactory factory = new DiskFileItemFactory();
//2request解析器
ServletFileUpload upload = new ServletFileUpload(factory);
//List<FileItem>
List itemList = upload.parseRequest(request);
for(int i = 0; i < itemList.size(); i++){
FileItem fileItem = (FileItem) itemList.get(i); //file
if(!fileItem.isFormField()){
//获取文件的名称
String fileName = fileItem.getName();
if(fileName != null && !fileName.equals("")){
//获取文件的后缀名
String suffixName = fileName.substring(fileName.lastIndexOf("."));
//获取UUID名称中间去掉“-”
UUID id = UUID.randomUUID();
String prefixName = String.valueOf(id).replace("-", "");
//获取时间日期
Date currentTime = new Date();
SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMdd");
String dateString = formatter.format(currentTime);
//获取新的名称
String newName = dateString + "-" + prefixName + suffixName;
QiNiu qiNiu = new QiNiu();
byte[] data = fileItem.get();
boolean flag = qiNiu.upload(data, newName);
if(flag){
//把数据写入数据库
request.setAttribute("message", "上传成功!!");
}
}else{
request.setAttribute("message", "请添加上传文件!!");
}
}
}
request.getRequestDispatcher("upload.jsp").forward(request, response);
} catch (FileUploadException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}