java-uploadify 批量上传文件到七牛云
来源:互联网 发布:剑三藏剑成男脸型数据 编辑:程序博客网 时间:2024/06/01 12:13
- 搭建一个简单的SpringMVC框架
- 需要的jar包:
1. okhttp-3.2.0.jar
2. okio-1.9.0.jar
3.qiniu-java-sdk-7.2.7.jar
下载地址:
链接:http://pan.baidu.com/s/1o7IWMh0 密码:73fk
- 前端需要的资源:
1.uploadify.css
2.jquery-1.4.2.min.js
3.jquery.uploadify.min.js
4.uploadify.swf
5.cancel.png
下载地址:
链接:http://pan.baidu.com/s/1c2w6KKC 密码:g607
- 上传页面编写:index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>jquery upload</title>
<link rel="stylesheet" href="uploadify/uploadify.css" type="text/css"></link>
<script type="text/javascript" src="js/jquery-1.4.2.min.js"></script>
<script type="text/javascript" src="uploadify/jquery.uploadify.min.js"></script>
<script type="text/javascript">
$(function () {
$("#file_upload").uploadify({
//指定swf文件
'swf': 'uploadify/uploadify.swf',
//后台处理的页面
'uploader': 'upload/testQiNiu.do',
'progressData' : 'speed',
//按钮显示的文字
'buttonText': '上传文件',
//显示的高度和宽度,默认 height 30;width 120
//'height': 15,
//'width': 80,
//上传文件的类型 默认为所有文件 'All Files' ; '*.*'
//在浏览窗口底部的文件类型下拉菜单中显示的文本
'fileTypeDesc': 'All Files',
//允许上传的文件后缀
//'fileTypeExts': '*.gif; *.jpg; *.png',
'cancel': 'uploadify/cancel.png',
//上传文件页面中,你想要用来作为文件队列的元素的id, 默认为false 自动生成, 不带#
'queueID': 'fileQueue',
//选择文件后自动上传
'auto': false,
//设置为true将允许多文件上传
'multi': true,
/* 'onUploadComplete' : function(file) {
alert('上传完成');
}, */
'onCancel' : function(file) {
alert('取消上传');
}
});
});
</script>
</head>
<body>
<div id="fileQueue"></div>
<input type="file" name="file_upload" id="file_upload" />
<p>
<a href="javascript:$('#file_upload').uploadify('upload','*')">开始上传</a>
<a href="javascript:$('#uploadify').uploadify('cancel')">取消所有上传</a>
</p>
</body>
</html>
- 工具类编写:IPTimeStamp.java
利用客户端IP+时间+三位随机数字生成非重复文件名
package com.qiang;
//PTimeStamp.java
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Random;
public class IPTimeStamp {
private String ip;
private Date date;
private SimpleDateFormat format;
public IPTimeStamp() {
try {
ip = InetAddress.getLocalHost().getHostAddress();
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public String getTimeStamp() {
format = new SimpleDateFormat("yyyyMMddHHmmssSSS");
return format.format(new Date());
}
public String addZero(String str, int len) {
StringBuffer sb = new StringBuffer();
sb.append(str);
while (sb.length() < len) {
sb.insert(0, "0");
}
return sb.toString();
}
public String getIPTimeStampRandom() {
StringBuffer sb = new StringBuffer();
String[] ips = this.ip.split("\\.");
for (int j = 0; j < ips.length; j++) {
// System.out.println(ips[j]);
sb.append(this.addZero(ips[j], 3));
}
sb.append(this.getTimeStamp());
Random rod = new Random();
for (int i = 0; i < 3; i++) {
sb.append(rod.nextInt(10));
}
return sb.toString();
}
}
- 文件上传控制器编写:UploadController.java
package com.qiang;
import java.io.File;
import java.io.IOException;
import java.util.Iterator;
import java.util.List;
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;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import com.qiniu.http.Response;
import com.qiniu.storage.Configuration;
import com.qiniu.storage.UploadManager;
import com.qiniu.util.Auth;
@Controller
@RequestMapping("/upload")
public class UploadController {
//设置好账号的ACCESS_KEY和SECRET_KEY
String ACCESS_KEY = "Le8jyHg71J7UuV***KYUmF-UMbJOZgmLMO"; //这两个登录七牛 账号里面可以找到
String SECRET_KEY = "VMO5cIW***ifokRkefGE_WWxKmC2n2d";
//要上传的空间
String bucketname = "usercenterfilesccw"; //对应要上传到七牛上 你的那个路径(自己建文件夹 注意设置公开)
//上传到七牛后保存的文件名
String key = "test.doc";
//密钥配置
Auth auth = Auth.create(ACCESS_KEY, SECRET_KEY);
//创建上传对象
Configuration conf=new Configuration();
UploadManager uploadManager;
{
uploadManager=new UploadManager(conf);
}
/**上传到本地服务器
* @param request
* @param response
*/
@RequestMapping("/test.do")
public void test(HttpServletRequest request,HttpServletResponse response){
String savePath = request.getSession().getServletContext()
.getRealPath("");
// 得到项目的工作目录
savePath = savePath + "/uploads/";
File f1 = new File(savePath);
// 如果没有的话就创建目录
if (!f1.exists()) {
f1.mkdirs();
}
DiskFileItemFactory fac = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(fac);
upload.setHeaderEncoding("utf-8");
List<FileItem> fileList = null;
try {
fileList = upload.parseRequest(request);
} catch (FileUploadException ex) {
return;
}
Iterator<FileItem> it = fileList.iterator();
String name = "";
String extName = "";
while (it.hasNext()) {
FileItem item = it.next();
if (!item.isFormField()) {
// 解析文件
name = item.getName();
long size = item.getSize();
String type = item.getContentType();
if (name == null || name.trim().equals("")) {
continue;
}
// 得到文件的扩展名
if (name.lastIndexOf(".") >= 0) {
extName = name.substring(name.lastIndexOf("."));
}
File file = null;
do {
// 利用客户端IP+时间+三位随机数字生成非重复文件名:
name = new IPTimeStamp().getIPTimeStampRandom();
file = new File(savePath + name + extName);
} while (file.exists());
File saveFile = new File(savePath + name + extName);
try {
item.write(saveFile);
} catch (Exception e) {
e.printStackTrace();
}
}
}
try {
response.getWriter().print(name + extName);
} catch (IOException e) {
e.printStackTrace();
}
}
/**上传到七牛云端
* @param request
* @param response
*/
@RequestMapping("testQiNiu.do")
public void testQN(HttpServletRequest request,HttpServletResponse response){
List<FileItem> fileList = null;
try {
DiskFileItemFactory fac = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(fac);
fileList = upload.parseRequest(request);
} catch (FileUploadException ex) {
return;
}
Iterator<FileItem> it = fileList.iterator();
try {
while (it.hasNext()) {
FileItem item = it.next();
Response res = uploadManager.put(item.getInputStream(), key, getUpToken(),null, "application/zip");
System.out.println(res.getInfo());
}
} catch (Exception e) {
e.printStackTrace();
}
}
//简单上传,使用默认策略,只需要设置上传的空间名就可以了
public String getUpToken(){
return auth.uploadToken(bucketname);
}
}
demo已上传至GitHub,地址如下:
https://github.com/18394093929/QiNiuBatchFileUpload
阅读全文
2 0
- java-uploadify 批量上传文件到七牛云
- uploadify+批量上传文件+java
- uploadify+批量上传文件+java
- uploadify批量上传文件
- uploadify批量上传文件
- uploadify批量文件、图片上传
- java uploadify 实现文件上传
- uploadify批量上传图片
- Springmvc+uploadify实现文件带进度条批量上传
- Springmvc+uploadify实现批量上传文件(显示进度条)
- java文件上传uploadify-v3.1
- Java使用uploadify文件上传出现HTTP404
- java 批量上传文件
- uploadify批量上传 代码示范
- jquery uploadify 上传文件
- uploadify实现文件上传
- 文件上传[Uploadify]
- uploadify多文件上传
- web表现层:
- 冒泡排序
- xss测试用例
- 软件人员绩效考核新思路
- 阶段总结 与 下阶段目标
- java-uploadify 批量上传文件到七牛云
- 通过git的webhook实现通过钉钉进行代码及时review(Java版本)
- C语言 fgets函数与fputs函数用法
- webpack使用笔记(二)
- Java中Enum类型的序列化及类升级不建议用枚举的原因
- 04 QT设置背景色
- 微信支付,退款
- 一张图带你看懂小程序的发展历程
- jenkins 配置邮箱smtp 提示出错