enctype=multipart/form-data的表单无法获取表单中除了type=file以外的其他参数 commons-fileupload 获取除file外其他参数...
大家会发现,enctype="multipart/form-data"的表单提交后,在后台无法用传统的request.getParameter获取其他参数
我个人理解是因为每个参数都用流的形式处理了,需要特别的方式才能获取
本文使用commons-fileupload 获取除file外其他参数
HTML代码:
<input id="fileInput" type="file" onchange="uploadFile();" name="upload" >
<input type="hidden" value="/image/" name="directory">
</form>
Servlet代码:
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.Iterator;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
public class UploadServlet extends HttpServlet {
@SuppressWarnings("unchecked")
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
String errorMessage = null;
try {
DiskFileItemFactory fac = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(fac);
upload.setHeaderEncoding("utf-8");
List fileList = null;
fileList = upload.parseRequest(request);
String dir = ((FileItem)fileList.get(1)).getString(); //获取directory参数
if (dir == null) {
dir = "/";
}
String savePath = getServletContext().getRealPath("/test" + dir);
System.out.println("save at:" + savePath);
File f1 = new File(savePath);
if (!f1.exists()) {
f1.mkdirs();
}
Iterator<FileItem> it = fileList.iterator();
String name = "";
while (it.hasNext()) {
FileItem item = it.next();
if (!item.isFormField()) {
name = item.getName();
File file = new File(savePath + File.separatorChar + name);
if (file.exists()) {
errorMessage = "该文件已经存在!请重命名后再上传。";
}
item.write(file);
item.delete(); //释放输出流
}
}
if (errorMessage == null) {
response.getWriter().print("<script> parent.finishUploading(1);</script>");
} else {
response.getWriter().print("<script> parent.finishUploading(0,'" + errorMessage + "');</script>");
}
} catch (Exception exception) {
response.getWriter().print("<script> parent.finishUploading(0,'上传失败,请重试。');</script>");
}
}
}
转载于:https://www.cnblogs.com/kenkofox/archive/2011/03/26/1996258.html
enctype=multipart/form-data的表单无法获取表单中除了type=file以外的其他参数 commons-fileupload 获取除file外其他参数...相关推荐
- ajax异步请求——form表单提交 及 表单序列化提交
ajax异步请求 AJAX介绍 AJAX 指异步 JavaScript 及 XML(Asynchronous JavaScript And XML),它不是一种新的编程语言,而是一种使用现有标准的新方 ...
- php form表单验证,Validform表单验证总结篇
近期项目里用到了表单的验证,选择了Validform_v5.3.2. 先来了解一下一些基本的参数: 通用表单验证方法: Demo:$(".demoform").Validform( ...
- php阻止form提交表单提交,防止表单提交时刷新页面-阻止form表单的默认提交行为...
最近在写 ajax 提交的时候遇到一个问题,在执行 ajax 提交之后,浏览器页面自动刷新了,主要是没有 由于form 表单的默认提交行为.一下是几种阻止 form 表单默认提交行为的方式. 1.使用 ...
- html表单自动提交表单提交表单数据类型,表单
表单在网页中主要负责数据采集功能.一个表单有三个基本组成部分: 表单标签:这里面包含了处理表单数据所用CGI程序的URL以及数据提交到服务器的方法. 表单域:包含了文本框.密码框.隐藏域.多行文本框. ...
- mysql 表单属性_php表单常用属性有什么?
程序开发中,必不可少的会使用到form表单,以前只是在前端开发时简单使用,对它的属性不甚了解,最近在后端学习中,不断接触到它的属性,现记录一二.下面本篇文章给大家介绍php表单常用的5个属性. act ...
- php显示html表单内容,HTML表单是什么?HTML表单内容的详细介绍(附代码)
HTML 表单是用于搜集不同类型的用户输入的,表单是一个包含表单元素的区域:表单元素是允许用户在表单中(比如:文本域.下拉列表.单选框.复选框等等)输入信息的元素:表单使用表单标签( )定义. 一.介 ...
- ajax合并表单,ajax。表单
JQuery读书笔记--JQuery-Form中的ajaxForm和ajaxSubmit的区别 JQuery中的ajaxForm和ajaxSubmit使用差不多功能也差不多.很容易误解. 按照作者的解 ...
- html提交表单原理,HTML表单、HTTP Get与Post杂谈
HTTP的GET/POST方式有何区别?这是一个老生常谈的问题,但老生常谈的问题往往有一些让人误解的结论.本文将带您浅尝HTTP协议,在了解HTTP协议的同时将会展示许多被人们忽视的内容.在掌握了HT ...
- html js表单,HTML HTML 表单 - 闪电教程JSRUN
HTML 表单用于搜集不同类型的用户输入. 元素 HTML 表单用于收集用户输入. 元素定义 HTML 表单: 实例 . form elements . HTML 表单包含表单元素. 表单元素指的是不 ...
- dw表单存入mysql_将表单添加到表单数据库
将表单添加到表单数据库Adding Forms to the Forms Database 04/20/2017 本文内容 如果打印机支持其他纸张规格,可以通过在打印机驱动程序的 GPD 文件中对其进 ...
最新文章
- sparkCore源码解析之思维脑图
- 项目交付为什么失败?-记我在某个项目中的迷思
- Java机器学习库ML之三Sampling(采样)
- 一些powershell基本使用示例
- 和套套一样,一次性橡胶手套制作现场, 这鬼畜的画风
- Vue+Webpack使用规范
- 想要给视频去色有什么方法?原来用这个就可以了
- WiFi 空口抓包工具 --- OmniPeek
- msdia80.dll 是干什么的?这个文件可以删除吗?
- Linux系统下微信网页版无法登录问题(deepin-wine-for-ubuntu)
- java5兼容性,兼容性问题 (适用于 UNIX 的 Sun Java Enterprise System 5 发行说明)
- 10个知识学习app,开始武装自己的大脑吧!
- TyoeScript
- .NetCore源码阅读笔记系列之Security (一) Authentication AddCookie
- 现代逻辑在计算机科学与人工智能中的应用,谓词逻辑在人工智能中的应用
- 通过金矿模型介绍动态规划(经典入门)
- 学校学计算机是什么,想学计算机该上什么大学?传智专修学院是个好选择
- 考研数学线上笔记(七):凯哥行列式、矩阵、向量组、方程组概念选择题系列课程
- 为别人做嫁衣---代理模式
- 在C++Builder6中使用DCEF3嵌入谷歌内核浏览器