最近项目用到文件上传文件下载的功能,因为之前没有做过,所以现学现卖一下。
jsp代码(文件上传)
<form id="upLoad" method="post">
<input type="file" id="yaFile" name="file"><br/>
<input id="fileSubmit" type="button" value="提交">
</form>
js代码:这里我选择的是异步提交
$("#fileSubmit").click(function(){
var formData = new FormData();
formData.append("file", document.getElementById("upLoad").files[0]);
$.ajax({
cache: true,
type: "POST",
url:'路径',
data:formData,
processData: false,//禁止jquery对DAta数据的处理,默认会处理
contentType: false,//禁止设置请求类型
async: false,
error: function(request) {
alert("上传失败");
},
success: function(data) {
if(data==0){
alert("上传成功");
} } });});
java代码:文件上传
/**
* 文件上传功能
* @param file
* @return
* @throws IOException
*/
@RequestMapping("/upload")
@ResponseBody
public String upload(MultipartFile file,String faUrl,HttpServletRequest request) throws IOException{
String path = request.getSession().getServletContext().getRealPath("upload");//文件上传路径
String fileName = file.getOriginalFilename();
File dir = new File(path ,fileName);
if(!dir.exists()){
dir.mkdirs();
}
//MultipartFile自带的解析方法
file.transferTo(dir);
return "0";
}
js代码:文件下载
function onClick() {
var url ="路径"
document.location.href=url;
}
java代码:文件下载
/**
* 文件下载功能
* @param request
* @param response
* @throws Exception
*/
@RequestMapping("/fileDown")
@ResponseBody
public void fileDown(HttpServletRequest request,HttpServletResponse response){
//通过文件名找出文件的所在目录
String path = request.getSession().getServletContext().getRealPath("upload");
ServletOutputStream out;
//得到要下载的文件
File file = new File(path);
try {
//设置响应头,控制浏览器下载该文件
response.setContentType("multipart/form-data");
//获得浏览器信息,并处理文件名
String headerType=request.getHeader("User-Agent").toUpperCase();
String fileName = null;
if (headerType.indexOf("EDGE") > 0||headerType.indexOf("MSIE")>0||headerType.indexOf("GECKO")>0) {
fileName=URLEncoder.encode(file.getName(), "UTF-8");
}else{
fileName= new String(file.getName().replaceAll(" ", "").getBytes("utf-8"), "iso8859-1");
}
response.addHeader("Content-Disposition", "attachment;filename="+fileName);
response.addHeader("Content-Length", "" + file.length());
FileInputStream inputStream = new FileInputStream(file);
out = response.getOutputStream();
int b = 0;
byte[] buffer = new byte[1024];
while (b != -1) {
b = inputStream.read(buffer);
//写到输出流(out)中
if(b!=-1)
out.write(buffer, 0, b);
}
inputStream.close();
out.close();//关闭输出流
out.flush();
} catch (IOException e) {
e.printStackTrace();
}
}
以上为文件上传、文件下载的全部代码,喜欢的朋友可以参考下。