大家会发现,enctype="multipart/form-data"的表单提交后,在后台无法用传统的request.getParameter获取其他参数

我个人理解是因为每个参数都用流的形式处理了,需要特别的方式才能获取

本文使用commons-fileupload 获取除file外其他参数

HTML代码:

<form id="uploadFileForm" action="UploadServlet" target="hiddenFrame" method="post" enctype="multipart/form-data">
<input id="fileInput" type="file" onchange="uploadFile();" name="upload" >
<input type="hidden" value="/image/" name="directory">
</form>

Servlet代码:

package UI.FileManage;

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外其他参数...相关推荐

  1. ajax异步请求——form表单提交 及 表单序列化提交

    ajax异步请求 AJAX介绍 AJAX 指异步 JavaScript 及 XML(Asynchronous JavaScript And XML),它不是一种新的编程语言,而是一种使用现有标准的新方 ...

  2. php form表单验证,Validform表单验证总结篇

    近期项目里用到了表单的验证,选择了Validform_v5.3.2. 先来了解一下一些基本的参数: 通用表单验证方法: Demo:$(".demoform").Validform( ...

  3. php阻止form提交表单提交,防止表单提交时刷新页面-阻止form表单的默认提交行为...

    最近在写 ajax 提交的时候遇到一个问题,在执行 ajax 提交之后,浏览器页面自动刷新了,主要是没有 由于form 表单的默认提交行为.一下是几种阻止 form 表单默认提交行为的方式. 1.使用 ...

  4. html表单自动提交表单提交表单数据类型,表单

    表单在网页中主要负责数据采集功能.一个表单有三个基本组成部分: 表单标签:这里面包含了处理表单数据所用CGI程序的URL以及数据提交到服务器的方法. 表单域:包含了文本框.密码框.隐藏域.多行文本框. ...

  5. mysql 表单属性_php表单常用属性有什么?

    程序开发中,必不可少的会使用到form表单,以前只是在前端开发时简单使用,对它的属性不甚了解,最近在后端学习中,不断接触到它的属性,现记录一二.下面本篇文章给大家介绍php表单常用的5个属性. act ...

  6. php显示html表单内容,HTML表单是什么?HTML表单内容的详细介绍(附代码)

    HTML 表单是用于搜集不同类型的用户输入的,表单是一个包含表单元素的区域:表单元素是允许用户在表单中(比如:文本域.下拉列表.单选框.复选框等等)输入信息的元素:表单使用表单标签( )定义. 一.介 ...

  7. ajax合并表单,ajax。表单

    JQuery读书笔记--JQuery-Form中的ajaxForm和ajaxSubmit的区别 JQuery中的ajaxForm和ajaxSubmit使用差不多功能也差不多.很容易误解. 按照作者的解 ...

  8. html提交表单原理,HTML表单、HTTP Get与Post杂谈

    HTTP的GET/POST方式有何区别?这是一个老生常谈的问题,但老生常谈的问题往往有一些让人误解的结论.本文将带您浅尝HTTP协议,在了解HTTP协议的同时将会展示许多被人们忽视的内容.在掌握了HT ...

  9. html js表单,HTML HTML 表单 - 闪电教程JSRUN

    HTML 表单用于搜集不同类型的用户输入. 元素 HTML 表单用于收集用户输入. 元素定义 HTML 表单: 实例 . form elements . HTML 表单包含表单元素. 表单元素指的是不 ...

  10. dw表单存入mysql_将表单添加到表单数据库

    将表单添加到表单数据库Adding Forms to the Forms Database 04/20/2017 本文内容 如果打印机支持其他纸张规格,可以通过在打印机驱动程序的 GPD 文件中对其进 ...

最新文章

  1. sparkCore源码解析之思维脑图
  2. 项目交付为什么失败?-记我在某个项目中的迷思
  3. Java机器学习库ML之三Sampling(采样)
  4. 一些powershell基本使用示例
  5. 和套套一样,一次性橡胶手套制作现场, 这鬼畜的画风
  6. Vue+Webpack使用规范
  7. 想要给视频去色有什么方法?原来用这个就可以了
  8. WiFi 空口抓包工具 --- OmniPeek
  9. msdia80.dll 是干什么的?这个文件可以删除吗?
  10. Linux系统下微信网页版无法登录问题(deepin-wine-for-ubuntu)
  11. java5兼容性,兼容性问题 (适用于 UNIX 的 Sun Java Enterprise System 5 发行说明)
  12. 10个知识学习app,开始武装自己的大脑吧!
  13. TyoeScript
  14. .NetCore源码阅读笔记系列之Security (一) Authentication AddCookie
  15. 现代逻辑在计算机科学与人工智能中的应用,谓词逻辑在人工智能中的应用
  16. 通过金矿模型介绍动态规划(经典入门)
  17. 学校学计算机是什么,想学计算机该上什么大学?传智专修学院是个好选择
  18. 考研数学线上笔记(七):凯哥行列式、矩阵、向量组、方程组概念选择题系列课程
  19. 为别人做嫁衣---代理模式
  20. 在C++Builder6中使用DCEF3嵌入谷歌内核浏览器

热门文章

  1. NVIDIA芯片组BIOS设置和RAID设置简单介绍
  2. WCF分布式开发常见错误解决(1):添加服务引用出错
  3. 字符串内置方法 第二弹
  4. chrome控制台使用jquery
  5. 2017省夏令营Day7
  6. IntelliJ IDEA安装AngularJS插件
  7. 【bzoj1433】[ZJOI2009]假期的宿舍
  8. java day40【会话技术:Cookie 、会话技术:Session 、JSP:入门学习】
  9. java day26【数据库的基本概念、MySQL数据库软件、SQL数据库的基本概念】
  10. php简单混淆类加密文件如何解密?