jsp:
<tr >
<td bgcolor="#FFFFFF" width="15%" align="right"> 附件:</td>
<td bgcolor="#FFFFFF" colspan="3">
<div style="margin:3px" >
<input class="modify_module" type="file" id="file" name="file" onchange="_addFile()"/>
<table id="fileList" border="0" cellspacing="0" cellpadding="0"style="background-color:#FFF;">
<c:if test="${!empty files}">
<c:forEach items="${files}" step="1" var="file" varStatus="status">
<tr>
<td class="td_l td_file" align="left" height="30px" id="${file.uuid }">
<a href="javascript:void(0)" name="uploadFileName" onclick="_downLoad('${file.uuid }','${file.url }','${file.name }')">${file.name }</a>
<a class="modify_module" href="javascript:void(0)" name="deleteFile" onclick="_delete('${file.uuid }','${file.url }','${file.name }')">[删除]</a>
</td>
</tr>
</c:forEach>
</c:if>
</table>
</div>
</td>
</tr>
js:
//即时上传文件
function _addFile(){
var length=$("#fileList tr").length;
if(length>=5){
$.messager.alert("提示","最多只能上传5张附件","warning");
return ;
}
$.ajaxFileUpload({
url: context+'/checkresult/checkresult_uploadFile.do',
type: 'post',
secureuri: false, //一般设置为false
fileElementId: "file", // 上传文件的id、name属性名
dataType: 'json', //返回值类型,一般设置为json、application/json
data:{groupUUID : $("#td_groupuuid1").val()}, //传递参数到服务器
success: function(data, status){
if (data.status == "success") {
var fileUUID = data.fileUUID;
var url = data.url;
var name = data.fileName;
var tr_str = "<tr><td class='td_l td_file' align='left' height='30px' id=\""+fileUUID+"\"></td></tr>"
$('#fileList').append(tr_str);
var a_str = "<a href='javascript:void(0)' name='uploadFileName' onclick='_downLoad(\""+fileUUID+"\",\""+url+"\",\""+name+"\")'/>"+name+"</a>";
a_str += " <a class='modify_module' href='javascript:void(0)' name='deleteFile' onclick='_delete(\""+fileUUID+"\",\""+url+"\",\""+name+"\")'>[删除]</a>";
document.getElementById(fileUUID).innerHTML = a_str;
$.messager.alert("提示","上传成功","info");
} else {
$.messager.alert("提示","上传失败","warning");
}
},
error: function(data, status, e){
$.messager.alert("提示","上传失败","error");
}
});
}
//删除文件
function _delete(fileUUID, url, name){
$.ajax({
cache: true,
type: "POST",
url: context+"/base/file_deleteFile.do",
dataType:'json',
data:{fileUUID:fileUUID, url:url, fileName:name},
async: true,
error: function(request) {
$.messager.alert("提示","删除失败","warning");
},
success: function(data) {
$("#"+fileUUID).parent().remove();
$.messager.alert("提示","删除成功","info");
}
});
}
//下载文件
function _downLoad(fileUUID, url, name){
var url = escape(escape(url));
var name = escape(escape(name));
var urlstr = context+"/base/file_downLoadFile.do?fileUUID="+fileUUID+"&url="+url+"&fileName="+name;
window.location.href = urlstr;
return;
}
ACTION:
public void uploadFile(){
Map msg = new HashMap();
File destFile = null;
try {
FileInputStream fis = new FileInputStream(getFile());
//String checkPath = request.getParameter("checkPath");
String rootPath = SaveAndroidSubmitFileUtil.FILE_PATH;
String dirPath = Configuration.getString("CHECK_RESULT") + DateUtil.getCurrentDate("yyyyMMdd") + "/";
File dir = new File(rootPath + dirPath);
if (!dir.exists()) {
dir.mkdirs();
}
String[] strs = fileFileName.split("\\.");
String fileUUID = StringUtil.getUniqueNo();
String newFileName = fileUUID + "." + strs[1];
String filePath = dirPath + newFileName;
destFile = new File(rootPath + dirPath, newFileName);
FileUtil.copyFile(file, destFile);
String groupUUID = request.getParameter("groupUUID");
msg.put("fileUUID", fileUUID);
msg.put("groupUUID", groupUUID);
msg.put("fileName", fileFileName);
msg.put("type", fileService.getFileType(strs[1]));
msg.put("url", filePath);
msg.put("is_valid", "1");
fileService.insertFile(msg);
msg.put("status", "success");
JSONObject json = JSONObject.fromObject(msg);
response.getWriter().write(json.toString());
} catch (Exception e) {
e.printStackTrace();
if(destFile!=null && destFile.exists()){
destFile.delete();
}
try {
msg.put("status", "error");
JSONObject json = JSONObject.fromObject(msg);
response.getWriter().write(json.toString());
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
public void deleteFile(){
Map msg = new HashMap();
try {
String fileUUID = request.getParameter("fileUUID");
String url = request.getParameter("url");
String fileName = request.getParameter("fileName");
if (fileName != null && fileName.indexOf("%") >= 0) {
fileName = Escape.unescape(Escape.unescape(fileName));
}
if (url != null && url.indexOf("%") >= 0) {
url = Escape.unescape(Escape.unescape(url));
}
String rootPath = SaveAndroidSubmitFileUtil.FILE_PATH;
File destFile = new File(rootPath + url);
if(destFile.exists()){
fileService.deleteFile(fileUUID);
destFile.delete();
msg.put("status", "success");
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
JSONObject json = JSONObject.fromObject(msg);
response.getWriter().write(json.toString());
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
public String downLoadFile() {
String url = request.getParameter("url");
String fileName = request.getParameter("fileName");
if (fileName != null && fileName.indexOf("%") >= 0) {
fileName = Escape.unescape(Escape.unescape(fileName));
}
if (url != null && url.indexOf("%") >= 0) {
url = Escape.unescape(Escape.unescape(url));
}
response.setContentType("images/jpeg");
response.setHeader("Pragma", "No-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);
try {
// 这个就就是弹出下载对话框的关键代码
response.setHeader("Content-disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8"));
String rootPath = SaveAndroidSubmitFileUtil.FILE_PATH;
File resFile = new File(rootPath + url);
InputStream input = new FileInputStream(resFile);
ServletOutputStream out = response.getOutputStream();
byte[] buffer = new byte[1024];
int i = 0;
while ((i = input.read(buffer)) != -1) {
out.write(buffer, 0, i);
}
input.close();
out.flush();
out.close();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}