java文件上传下载代码实例

2025-05-29 0 38

本文实例为大家分享了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

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 java文件上传下载代码实例 https://www.kuaiidc.com/110178.html

相关文章

发表评论
暂无评论