java上传下载原理_Java上传下载文件原理

在工作中常碰到需要上传下载文件的需求,主要通过框架的去实现。不同的框架,在实现上有些许不同,但究其原理实际都是相同的。

Java实现上传下载原理

在页面上通过form表单提交文件,http通过流将文件传输到服务器。后台程序通过获取request中的输入流来解析出文件,然后通过outputStream保存在服务器上,这就是Java上传文件的原理。

在页面上发送请求下载文件,程序通过inputStream读取服务器上的文件,然后通过写入response的OutputStream,完成文件的下载。

以上就是对Java上传下载文件的原理简单的介绍了一下。

Java上传

在Java项目中上传文件需要使用form表单(当然也可以使用一些上传的js库),需要写出method=post和enctype=mutipart/form-data。示例如下:

form表单提交到服务器后,就能使用request.getInputStream()获取流数据,然后可以对其中的数据进行解析,使用OutputStream将文件保存在服务器上。需要注意的是,流里面的数据有一些并不是源文件的数据,需要去除。而在使用框架或者一些工具类时,可以免去这一部分的解析工作。例如在springmvc中常使用的MultipartHttpServletRequest:

MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;

Map fileMap = multipartRequest.getFileMap();

接下来就只需要使用OutputStream将文件保存在服务器中就可以了。

Java下载

Java下载文件的原理很简单,就是把文件写入response的输出流中就可以了。需要注意的是要设置好response中的contentType和header,attachment表示以附件的方式下载文件,filename为文件全名。关于contentType的具体内容可以自行百度。

OutputStream os = new BufferedOutputStream(response.getOutputStream());

response.setHeader("Content-Disposition", "attachment; filename="+fileName);

response.setContentType("application/force-download");

byte[] bytes = new byte[1024];

int len = 0;

while((len = bis.read(bytes)) != -1){

os.write(bytes, 0, len);

}

bis.close();

os.flush();

os.close();

以上的代码是下载单个文件,如果需要下载多个文件,给出的建议是在服务器端将文件打包一起下载。尽量避免循环下载,而且一次连接,输出流只能输出一次。

总结

对Java的IO有基本的了解后,使用Java实现上传和下载就比较简单。重点在于对文件流的读出和写入,上传就是将request中的输入流读出保存在服务器上,下载就是将服务器上的文件写入response的输出流中。

参考

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值