当前位置: 首页 > 图灵资讯 > 技术篇> 文件的上传下载

文件的上传下载

来源:图灵教育
时间:2023-11-09 17:19:39

这是一篇关于文件上传和下载的文章

文件上传下载1。文件上传

我们以前可能知道或使用文件上传的组件和框架,如Java的Commons FileUpload、还有Struts2等。这里的例子是通过浏览器上传文件。众所周知,需要在客户端代码中使用来选择要上传的文件,代码如下:

<form action = "upload" method = "POST" enctype = "multipart/form-data"><input type = "file" name = "xxx" /><input type = "submit" value = "上传提交" /></form>

文件上传的三个要点:

  • 1.method = “POST” 这里请求的方法必须是post.
  • 2.enctype = “multipart/form-data” 编码类型是 多个表单数据.
  • 3.type = “file” 要有file表单元素.
1.文件下载

UploadServlet

@MultipartConfigPart part = req.getPart("abc");String uploadFilename = part.getSubmittedFileName();String filename= UUID.randomUUID().toString();String ext = uploadFilename.substring(uploadFilename.lastIndexOf("."));part.write("/D:/picture/"+filename + ext);//获取要下载的文件名,比如2.jpgString filename=req.getParameter("filename");String encodedFileName=URLEncoder.encode(filename,"UTF-8");resp.setHeader("content-disposition","attachment;filename="+encodedFileName);//设置文件响应头,解决弹出//逻辑3:处理文件的读写//确定从哪里读取文件:/Users/cj/Downloads////获取文件输入流,InputStreamm从此路径所代表的文件中读取 input=new FileInputStream("/D:/a/"+filename);//输出流:从resp对象中获得servlet响应流,响应流中的数据//等于浏览器OutputStreamm的数据 output=resp.getOutputStream();//从输出流中读取数据,在响应流中写下try {byte [] buffer=new byte[1024];int numread=0;while((numread=input.read(buffer))>0) {output.write(buffer,0,numread);}} finally {input.close();output.close();}

文件下载的四个要点:

  • 1.@MultipartConfig
  • 2.Part part = req.getPart(“xxx”); 得到part
  • 3.获取提交的文件名String uploadFilename = part.getSubmittedFileName();String filename = UUID.randomUUID().toString();//ext=.jpgString ext = uploadFilename.substring(uploadFilename.lastIndexOf("."));//从后面截取
  • 4.part.write("/a/b/c/"+filename+ext); 将文件保存到服务器上