推广公司网站,电影网站app怎么做,中国建设企业协会网站,顺德制作网站价格多少目录
一、准备工作
二、文件上传
三、文件下载 一、准备工作
如果想使用Spring的文件上传功能#xff0c;则需要再上下文中配置MultipartResolver前端表单要求#xff1a;为了能上传文件#xff0c;必须将表单的method设置为post#xff0c;并将enctype设置为multipart…目录
一、准备工作
二、文件上传
三、文件下载 一、准备工作
如果想使用Spring的文件上传功能则需要再上下文中配置MultipartResolver前端表单要求为了能上传文件必须将表单的method设置为post并将enctype设置为multipart/form-data。这有这样浏览器才会把用户选择的文件以二进制数据发送给服务器
二、文件上传
1、导入依赖commons-fileupload、commons-io
Maven会自动帮我们导入他的依赖包 commons-io包
!--文件上传--
dependencygroupIdcommons-fileupload/groupIdartifactIdcommons-fileupload/artifactIdversion1.3.3/version
/dependency
!--servlet-api导入高版本的--
dependencygroupIdjavax.servlet/groupIdartifactIdjavax.servlet-api/artifactIdversion4.0.1/version
/dependency
2、配置beanmultipartResolver
【注意这里bean的id必须为multipartResolver否则上传文件会报400的错误】
!--文件上传配置--
bean idmultipartResolver classorg.springframework.web.multipart.commons.CommonsMultipartResolver!-- 请求的编码格式必须和jSP的pageEncoding属性一致以便正确读取表单的内容默认为ISO-8859-1 --property namedefaultEncoding valueutf-8/!-- 上传文件大小上限单位为字节1048576010M --property namemaxUploadSize value10485760/property namemaxInMemorySize value40960/
/bean 3、 编写前端页面
form action/upload enctypemultipart/form-data methodpostinput typefile namefile/input typesubmit valueupload
/form
4、Controller
方法一
Controller
public class FileController {//RequestParam(file) 将namefile控件得到的文件封装成CommonsMultipartFile 对象//批量上传CommonsMultipartFile则为数组即可RequestMapping(/upload)public String fileUpload(RequestParam(file) CommonsMultipartFile file , HttpServletRequest request) throws IOException {//获取文件名 : file.getOriginalFilename();String uploadFileName file.getOriginalFilename();//如果文件名为空直接回到首页if (.equals(uploadFileName)){return redirect:/index.jsp;}System.out.println(上传文件名 : uploadFileName);//上传路径保存设置String path request.getServletContext().getRealPath(/upload);//如果路径不存在创建一个File realPath new File(path);if (!realPath.exists()){realPath.mkdir();}System.out.println(上传文件保存地址realPath);InputStream is file.getInputStream(); //文件输入流OutputStream os new FileOutputStream(new File(realPath,uploadFileName)); //文件输出流//读取写出int len0;byte[] buffer new byte[1024];while ((lenis.read(buffer))!-1){os.write(buffer,0,len);os.flush();}os.close();is.close();return redirect:/index.jsp;}
}
方法二采用file.Transto来保存上传的文件
RequestMapping(/upload2)
public String fileUpload2(RequestParam(file) CommonsMultipartFile file, HttpServletRequest request) throws IOException {//上传路径保存设置String path request.getServletContext().getRealPath(/upload);File realPath new File(path);if (!realPath.exists()){realPath.mkdir();}//上传文件地址System.out.println(上传文件保存地址realPath);//通过CommonsMultipartFile的方法直接写文件注意这个时候file.transferTo(new File(realPath / file.getOriginalFilename()));return redirect:/index.jsp;
}
5、测试
三、文件下载
1、Controller
RequestMapping(value/download)
public String downloads(HttpServletResponse response ,HttpServletRequest request) throws Exception{//要下载的图片地址String path request.getServletContext().getRealPath(/upload);String fileName 基础语法.jpg;//1、设置response 响应头response.reset(); //设置页面不缓存,清空bufferresponse.setCharacterEncoding(UTF-8); //字符编码response.setContentType(multipart/form-data); //二进制传输数据//设置响应头response.setHeader(Content-Disposition,attachment;fileNameURLEncoder.encode(fileName, UTF-8));File file new File(path,fileName);//2、 读取文件--输入流InputStream inputnew FileInputStream(file);//3、 写出文件--输出流OutputStream out response.getOutputStream();byte[] buff new byte[1024];int index0;//4、执行 写出操作while((index input.read(buff))! -1){out.write(buff, 0, index);out.flush();}out.close();input.close();return null;
}
2、前端
a href/download点击下载/a
3、测试