Java实现⽂件的上传下载(含源代码和jar包)
1.需要使⽤的jar包
链接:pan.baidu/s/1IaxQRSwfzxDpe4w4JiaEKw
spring怎么读取jar文件提取码:xwtz
2.如果想实现⽂件的下载,需要创建⼀张表,表的结构为
id url(id为查依据,url为⽂件名即可)
2.⽂件的上传
该⽅法我是建⽴在SpringBoot框架中实现的,实际上这并不是必要的。
主要的是参数file是上传的⽂件信息,即路径相关。path的路径为获取的,使⽤与linux与windows系统,如果服务器固定,可以将path路径写成绝对路径。
上传之后需要将⽂件名存进数据库中,并且对应唯⼀的id⽅便下载使⽤。
后台
@RequestMapping("upload")
public String testupload(@RequestParam("uploadfile") MultipartFile file,HttpServletRequest request) throws IllegalStateException, IOException{
System.out.println("上传");
if(!file.isEmpty()) {//上传⽂件路径
String path = Session().getServletContext().getRealPath(File.separator+"WEB-INF"+File.separator+"testupload");
//path="H:"+File.separator+"Demo"; 如果写绝对路径可⽤这个path覆盖上边
//上传⽂件名
String filename = OriginalFilename();
File filepath = new File(path,filename);
//判断路径是否存在,如果不存在就创建⼀个
if (!ParentFile().exists()) {
}
//将上传⽂件保存到⼀个⽬标⽂件当中
userService.insertFileByFileName(filename); //将⽂件的名字存⼊数据库
//输出⽂件上传最终的路径测试查看
return String.Size());
} else {
return "0";
}
}
前台
<form id="fileform" method="post" enctype="multipart/form-data">
<input type="file" id="fileupload" name="uploadfile"/>
<button id="upload_btn">上传⽂件</button>
</form>
$("#upload_btn").click(function(){
var form = new ElementById("fileform"));
$.ajax({
type:"post",
url:"/user/upload",
data:form,
processData:false,
contentType:false,
dataType:'text',
success:function(data){
alert(data);
}
});
});
3.⽂件的下载(注)
ids为传⼊的参数,为数据库中对应⽂件名的id,根据id查到⽂件名,
path为上传的⽂件路径,然后将路径与⽂件名拼接输出路径即为下载路径。
注:下载的请求不能使⽤ajax,具体原因不清楚,我使⽤ajax多次尝试失败,改⽤a标签直接请求然后成功。后台
@RequestMapping(value = "downloadfile",produces = "application/json;charset=utf-8")
public void downloadlm(HttpServletRequest request,HttpServletResponse response,String ids,Model model) throws IOException { int id=Integer.parseInt(ids);
System.out.println("进⼊下载⽂件");
Myfile myFile = userService.selectFileById(id);
String path = Session().getServletContext().getRealPath(File.separator+"WEB-INF"+File.separator+"testupload"); path="H:"+File.separator+"Demo";
String Url().Url().lastIndexOf("\\")+1);
System.out.println(filename+"=======================================");
File file = new File(path+File.separator+filename);
System.out.Path());
//设置响应的头信息,解决⽂件名为中⽂乱码的问题
response.setHeader("content-disposition", "attachment;filename="+Name(), "utf-8"));
//使⽤⽂件输⼊流读取下载⽂件信息
FileInputStream in = new FileInputStream(file);
//得到响应流中的输出流
OutputStream out = OutputStream();
//建⽴⼀个缓存区
byte[] buffer = new byte[1024];
int len = 0;
//把输⼊流中的数据通过循环写⼊到响应流中
while((len = in.read(buffer)) > 0) {
out.write(buffer,0,len);
}
in.close();
out.close();
}
前台:
<a id="down_file_btn" href="/user/downloadfile?ids=1">下载</a>
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论