本文实例为大家分享了java文件上传下载的具体代码,供大家参考,具体内容如下
文件上传
?
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
@requestmapping(value="/uploadfile",method=requestmethod.post)
public resultobject uploadfiles(@requestparam("file")multipartfile file,httpservletrequest request){
resultobject rs = null;//返回上传完成信息
string uploaddir = "files";//上传目录,文件保存在webapp下的files文件中
if(!file.isempty()) {
//可以对user做一些操作如存入数据库
//以下的代码是将文件file重新命名并存入tomcat的webapp目录下项目的下级目录
string filerealname = file.getoriginalfilename(); //获得原始文件名;
/*int pointindex = filerealname.indexof("."); //点号的位置
string filesuffix = filerealname.substring(pointindex); //截取文件后缀
uuid fileid = uuid.randomuuid(); //生成文件的前缀包含连字符
string savedfilename = fileid.tostring().replace("-", "").concat(filesuffix); //文件存取名
*/
string saveddir = request.getsession().getservletcontext().getrealpath(uploaddir); //获取服务器指定文件存取路径
file savedfile = new file(saveddir, filerealname);
boolean iscreatesuccess;
try {
iscreatesuccess = savedfile.createnewfile();
if (iscreatesuccess) {
file.transferto(savedfile); //转存文件
rs = resultobject.getsuccessresult("上传文件成功");
long size = file.getsize();//获取文件大小
rs.setdata(uploaddir+filerealname);
}else{
rs = resultobject.getfailresult("请修改文件名,重新上传");
}
} catch (ioexception e) {
e.printstacktrace();
}
}else{
rs = resultobject.getfailresult("文件不能为空");
}
return rs;
}
|
文件下载
?
|
1
2
3
4
5
|
@requestmapping(value = "/filterpermission/appdownload", method = requestmethod.get)
public void appdownload(httpservletrequest request, httpservletresponse response) {
//url是上面文件上传的url
download(url,request,response);
}
|
?
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
public string download(string filepath, httpservletrequest request, httpservletresponse response) {
bufferedinputstream bis = null;
bufferedoutputstream bos = null;
try {
//获取文件名
string filename = filepath.substring(filepath.lastindexof("/")+1);
response.setcharacterencoding("utf-8");
response.setcontenttype("application/octet-stream");
//response.setcontenttype("application/force-download");
//处理下载弹出框名字的编码问题
response.setheader("content-disposition", "attachment;filename="
+ new string( filename.getbytes("gb2312"), "iso8859-1" ));
//获取文件的下载路径
string path = request.getsession().getservletcontext().getrealpath(filepath);
//利用输入输出流对文件进行下载
inputstream inputstream = new fileinputstream(new file(path));
//设置文件大小
response.setheader("content-length", string.valueof(inputstream.available()));
bis = new bufferedinputstream(inputstream);//构造读取流
bos = new bufferedoutputstream(response.getoutputstream());//构造输出流
byte[] buff = new byte[1024];
int bytesread;
//每次读取缓存大小的流,写到输出流
while (-1 != (bytesread = bis.read(buff, 0, buff.length))) {
bos.write(buff, 0, bytesread);
}
response.flushbuffer();//将所有的读取的流返回给客户端
} catch (filenotfoundexception e) {
e.printstacktrace();
} catch (ioexception e) {
e.printstacktrace();
}finally{
try{
if(null != bis){
bis.close();
}
if(null != bos){
bos.close();
}
}catch(ioexception e){
system.out.println("下载文件失败,"+"文件路径:"+filepath+e);
logger.error("文件下载失败!", e);
}
}
// 返回值要注意,要不然就出现下面这句错误!
//java+getoutputstream() has already been called for this response
return null;
}
|
以上所述是小编给大家介绍的java文件上传下载详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对快网idc网站的支持!
原文链接:https://www.cnblogs.com/gczmn/p/9921479.html
相关文章
猜你喜欢
- 64M VPS建站:怎样优化以提高网站加载速度? 2025-06-10
- 64M VPS建站:是否适合初学者操作和管理? 2025-06-10
- ASP.NET自助建站系统中的用户注册和登录功能定制方法 2025-06-10
- ASP.NET自助建站系统的域名绑定与解析教程 2025-06-10
- 个人服务器网站搭建:如何选择合适的服务器提供商? 2025-06-10
TA的动态
- 2025-07-10 怎样使用阿里云的安全工具进行服务器漏洞扫描和修复?
- 2025-07-10 怎样使用命令行工具优化Linux云服务器的Ping性能?
- 2025-07-10 怎样使用Xshell连接华为云服务器,实现高效远程管理?
- 2025-07-10 怎样利用云服务器D盘搭建稳定、高效的网站托管环境?
- 2025-07-10 怎样使用阿里云的安全组功能来增强服务器防火墙的安全性?
快网idc优惠网
QQ交流群
您的支持,是我们最大的动力!
热门文章
-
2025-06-04 72
-
2025-05-29 94
-
2025-05-27 92
-
2025-06-04 39
-
2025-05-27 56
热门评论

