enctype="multipart/form-data"时文本框参数获取问题的解决

enctype="multipart/form-data"时文本框参数获取问题的解决

          • 分享一个令人头皮发麻的问题:在写web项目的时候需要用表单上传文件同时要在servlet中获取文本框的参数,于是servlet中用request.getParameter("")用来获取相对应的参数,在控制台输出,结果为null,检查后代码没问题,去百度开始了解决问题之旅。。。
          • enctype="multipart/form-data" 是什么:
          • 解决方法:在servlet前加入注解:@MultipartConfig!!!(servlet3.0及以上版本适用)
            • 代码如下:

分享一个令人头皮发麻的问题:在写web项目的时候需要用表单上传文件同时要在servlet中获取文本框的参数,于是servlet中用request.getParameter("")用来获取相对应的参数,在控制台输出,结果为null,检查后代码没问题,去百度开始了解决问题之旅。。。
enctype=“multipart/form-data” 是什么:
1、当我们上传的含有非文本内容,即含有文件(txt、MP3等)的时候,需要将form的enctype设置为multipart/form-data。
2、将表单中的数据变成二进制数据进行上传,所以这时候这时如果用request是无法直接获取到相应表单的值的
解决方法:在servlet前加入注解:@MultipartConfig!!!(servlet3.0及以上版本适用)
@MultipartConfig
public class servlet extends HttpServlet {}

2019.2.27 22:18
补充一下文件上传。。

代码如下:
		必须是servlet3.0及以后的版本
		//获取普通的上传组件
		String ?= request.getParameter(?);
		String ?= request.getParameter(?);
		//获取文件上传组件
		Part part = request.getPart("file");
		//获取文件的名称
		String header = part.getHeader("content-disposition");
		//截取字符串获取文件名称
		String headername = header.substring(header.indexOf("filename")+10, header.length()-1);
		//获取文件流
		InputStream put = part.getInputStream();
		//获取文件的真实路径
		String url = this.getServletContext().getRealPath("/uplod");

		UUID uuid = UUID.randomUUID();
		String filename = uuid+"@"+headername;
		//建立对拷流
		FileOutputStream fos = new FileOutputStream(new File(url+"/sc", filename));
		
		IOUtils.copy(put, fos);
		put.close();
		fos.close();
		
		//删除临时文件
		part.delete();

2019.2.28 16:27

你可能感兴趣的:(java)