jersey(rest)架构实现上传下载
其实是先的是最简单的上传下载,也是最古老的方法,其实我觉得好的地方是存在一个flash效果,
html页面:
引入了 <script type="text/javascript" src="$stylePath/resources/js/swfobject.js"></script>
<script type="text/javascript" src="$stylePath/resources/js/jquery.uploadify.v2.1.0.min.js"></script>
<link rel="stylesheet" href="$stylePath/resources/styles/uploadify.css" type="text/css" media="screen"/>
<body>
<form id="userForm" method="post">
<div class="wrap_item">
<input id="id" name="id" type="hidden"/>
<ul>
<li>
<label>标题:</label>
<input type="text" id="title" name="title" class="js_area"/>
</li>
<li>
<label>描述:</label>
<textarea rows="" cols="" id="description" name="description"></textarea>
<span class="text">文本长度限制200个字符</span>
<input type="hidden" name="filePath" id="filePath"/>
<input type="hidden" name="fileNameSystem" id="fileNameSystem"/>
<input type="hidden" name="fileNameActual" id="fileNameActual"/>
</li>
<li>
<label>文件</label>
<div id="file_upload"></div>
<div id="file_list"></div>
</li>
</ul>
</div>
<div class="btn_div">
<input type="button" class="Btn_save" value="上 传" onclick="$('#file_upload').uploadifyUpload();" id="saveArea"/>
<input type="button" class="Btn_save" value="保 存" onclick="savePlacard()" id="saveArea"/><input type="button" class="Btn_cancle" onclick="closeWin()" value="取 消" id="exitArea"/>
</div>
</form>
</body>
js代码:
$(function(){
$('#file_upload').uploadify({
'uploader' : '$stylePath/resources/imgs/uploadify.swf',
'script' : $().getRealPath()+'/ccms/placard/placard/upload',
'fileDataName' : 'file',
'cancelImg' : '$stylePath/resources/imgs/cancel.png',
'multi' : false,
'onComplete': function(event, queueID, fileObj, response, data) {
$(this).each(function(i) {
var strs=response;
//strs=strs.substring(1,strs.indexOf("]"));
strs=strs.replace("/\'/g","");
strs=strs.replace("/\"/g","");
var str=strs.split(",");
$("#filePath").val(str[0]);
$("#fileNameSystem").val(str[1]);
$("#fileNameActual").val(str[2]);
});
},
'onAllComplete': function(event, data) {
$("#file_list").html("本次上传文件: " + data.filesUploaded + " 个,文件总大小: " + data.allBytesLoaded + " KB,平均上传速度: " + data.speed + "kb/s");
},
'onError': function(event, queueID, fileObj) {
alert("文件:" + fileObj.name + " 上传失败");
}
});
});
save方法
function savePlacard(){
if(!check())return false;
$("#userForm").attr("action",$().getRealPath()+"/ccms/placard/placard/add");
$("#userForm").ajaxSubmit({
success:function(responseText,statusText,xhr,$form){
if(responseText=="1"){
alert("保存失败");
}
else{
confirm("保存成功",function (){
$("#id").val(responseText);
art.dialog.data("state","y");
art.dialog.data("origin").close();
});
}
}
});
后台资源方法
@POST
@Produces("text/plain")
@Path("/upload")
public String load(@Context HttpServletRequest request) throws Exception {
request.setCharacterEncoding("UTF-8");
String fileName ="";
String fileNewName="";
String fileRepository =request.getSession().getServletContext().getRealPath("")+ File.separatorChar+"upload"+File.separatorChar;
String filePath=File.separatorChar+"upload"+File.separatorChar;
String fileType="";
if (ServletFileUpload.isMultipartContent(request)) {
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
List<FileItem> items = null;
try {
items = upload.parseRequest(request);
} catch (FileUploadException e) {
e.printStackTrace();
}
if (items != null) {
Iterator<FileItem> iter = items.iterator();
while (iter.hasNext()) {
FileItem item = iter.next();
if (!item.isFormField() && item.getSize() > 0) {
fileName = processFileName(item.getName());
fileType=getFileType(fileName);
fileNewName=getFileName(fileName)
+new SimpleDateFormat("yyyyMMddHHmmssSSS") .format(new Date() )+fileType;
fileRepository=fileRepository+fileNewName;
filePath=filePath+fileNewName;
try {
item.write(new File(fileRepository));
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
}
return fileRepository + ","+fileNewName+","+fileName;
}
------------------------------------------以上是上传--------------------------------------------------------
------------------------------------------以上是下载--------------------------------------------------------
下载js
//获取上传的文件列表,这个在不同项目中是可变的
function loadPlcard(){
var html="";
$.post($().getRealPath()+"/ccms/placard/placard/protalList",{id:""},
function(data) {
if(data!=null){
var createDate="";
var filePath="";
for(var i=0;i<data.length;i++){
html=html+"<li><label id=\"title\">"+data[i]["
补充:web前端 , JavaScript ,