您的位置:首页 > 编程语言 > Java开发

java 用ajaxFileUpload上传文件到指定目录

2015-12-03 14:35 232 查看
这是 一个上传文件到指定目录的功能。对于页面长相上没什么好说的,很丑的啦,但是这个上传的功能我想为大家分享下,用的是uploadfile 和springmvc。

1.引入文件:

<script type="text/javascript" src="<c:url value="/lib/jquery/jquery.min.js"/>"></script>
<script src="<c:url value="/js/page_js/uploadfile.js"/>"></script>


2.页面元素:

<div style="padding:10px; margin:10px;  border: 1px solid #5bc0de; border-radius:5px">
<b style="color:#333; font-size:14px;"> 选择上传文件: </b>
<input type="file" id="URL_1" name="URL_1" style="  display: inline-block;">
</div>


3.js

$(document).ready(function() {
$("#URL_1").on("change", function() {
//     var userid=$("#user_id",window.parent.document).val();
var filePath = $("#URL_1").val();
// filepathVAL(filePath);
ajaxupload('URL_1');
});
});

function filepathVAL(filePath) {
if (filePath == null || filePath == "") {
alert("您未选择要上传的文件!");
return false;
}
var index = filePath.lastIndexOf(".");
var fileExt = filePath.substring(index + 1);
var picture = [ "png", "gif", "bmp", "jpg", "jpeg" ];
for ( var i in picture) {
if (fileExt.toLowerCase() != picture[i]) {
if (i != picture.length - 1) {
continue;
}
alert("您上传的不是图片请重新选择!");
return false;
} else {
break;
}
}

}

function ajaxupload(fileElementId) {
$.ajaxFileUpload({
url : '<c:url value="/manage/upload.do"/>?fileElementId='
+ fileElementId + '&code=${code}',
secureuri : false,
fileElementId : fileElementId, // 文件选择框的id属性
dataType : 'json', // 服务器返回的格式类型
type : 'post',
success : function(data, status) // 成功
{
if (data.flag == "success") {
alert("上传成功");
$.fn.ulynlist.refresh($("#ulyn-table-id"));
} else {
layer.alert("上传失败");
}
},
error : function(data, status, e) // 异常
{
layer.alert(data.flag + "     " + status);
layer.alert("出错了,请重新上传!");
}

});
}


4.java部分

@RequestMapping(value = "/upload.do", method = RequestMethod.POST)
public void uploadQuestionPic(String fileElementId,HttpServletRequest request,
HttpServletResponse response) throws Exception {
ManageService manageService = (ManageService)ServiceLocator.getBeanByClass(ManageService.class);

String code = request.getParameter("code");
JSONObject resultObj = new JSONObject();

try {
String saveDir = manageService.queryIMG(code);
if (!StringUtils.isBlank(saveDir)) {
resultObj = uploadFiles(fileElementId, saveDir, request);

String savaFileName  = resultObj.getString("newFileName");
manageService.saveFileLogs(code,savaFileName);//保存文件日志

}else {
resultObj.put("flag", "上传出错啦,没有查询到文件保存路径");
}
//  String saveDir = "D:\\test";
// resultObj = uploadFiles(fileElementId, saveDir, request);
//{"flag":"success","newFileName":"1449054407024---王力宏002.jpg"}
//写日志 TODO something....

} catch (Exception e) {

}  finally{
response.setContentType("text/html");
response.getWriter().write(resultObj.toJSONString());
}
}


/**
* 文件保存
* @param fileElementId   文件选择框的id属性
* @param saveDir   文件保存的绝对路径
* @param request
* @return JSONObject
*/
private JSONObject uploadFiles(String fileElementId, String saveDir,HttpServletRequest request){
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
JSONObject resultObj = new JSONObject();
/**得到图片保存目录的真实路径**/
String logoRealPathDir = saveDir;//  String saveDir = "D:\\test";

/**根据真实路径创建目录**/
File logoSaveFile = new File(logoRealPathDir);
if(!logoSaveFile.exists()){
logoSaveFile.mkdirs();
}

/**页面控件的文件流**/
MultipartFile multipartFile = multipartRequest.getFile(fileElementId);

/**获取文件的后缀**/
String filenameString  = multipartFile.getOriginalFilename();
System.out.println(filenameString);
String suffix = multipartFile.getOriginalFilename().substring
(multipartFile.getOriginalFilename().lastIndexOf("."));

/**拼成完整的文件保存路径加文件**/
String name = +  System.currentTimeMillis()+"---"+filenameString;//suffix;
String fileName = logoRealPathDir + File.separator+name;
File file = new File(fileName);
String data = file.getPath();

try {
multipartFile.transferTo(file);
resultObj.put("flag", "success");
resultObj.put("newFileName", name);
} catch (IllegalStateException e) {
e.printStackTrace();
resultObj.put("flag", "上传出错啦,文件路径不对");
} catch (IOException e) {
e.printStackTrace();
resultObj.put("flag", "上传出错啦,文件路径不对");
}
return resultObj;
}


好啦,完啦,就这么点代码,上传文件功能就完成了。总结下







==============================================================================================================================

==============================================================================================================================

==============================================================================================================================
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: