JSP页面/Apache FileUpload组件上传文件的同时,传递其他参数的方法

Spring3.0+Apache Tomcatv7.0+JDK1.7.0_u45+J2EE1.4验证通过。

需求:使用JSP页面上传文件时,同时需要传递相关参数。

1、  需要将form设置为enctype="multipart/form-data"method="post"参数;

2、  由于此时URL参数不能通过request.getParameter()获得,所以为了让@RequestMapping中设置的params="command=upload"条件生效,需要将参数直接加到表单的action中action="item.do?command=upload"

3、  在控制器处理时,使用item.isFormField(),item.getFieldName();item.getString()等方法去获取表单域属性名和参数;


 

JAVA类

import org.apache.commons.fileupload.DiskFileUpload;

import org.apache.commons.fileupload.FileItem;

@RequestMapping(value =
"item", params = "command=upload", method = RequestMethod.POST)

public String upload(ItemActionForm
form, HttpServletRequest
request,

HttpServletResponse
response) throws Exception {

String fullFileName =
null;

//Get real absolute path

String
realPath = request.getSession().getServletContext()

.getRealPath("/images");

System.out.println("realPath=" +
realPath);

DiskFileUpload disk =
new DiskFileUpload();

try {

List<FileItem> files =
(List<FileItem>) disk.parseRequest(request);

for (FileItem
item : files) {

// Parse the parameter

if (item.isFormField()) {

System.out.println("item.isFormField()");

String field =
item.getFieldName();

if (field !=
null) {

if (field.equalsIgnoreCase("itemNo")) {

itemNo = item.getString();

System.out.println("itemNo=" +
itemNo);

}

}

}

// parse the file data

fullFileName =
item.getName();

if (fullFileName ==
null) {

System.out.println("fullFileName not existed.");

continue;

}

//Retrive the filename from full pathname.

String fileName1 =
fullFileName.substring(fullFileName

.lastIndexOf("\\") + 1);

File file1 =
new File(realPath,
fileName1);

file1.getParentFile().mkdirs();

file1.createNewFile();

InputStream ins =
item.getInputStream();

OutputStream ous =
new FileOutputStream(file1);

try {

byte[]
buffer = new
byte
[1024];

int
len = 0;

while ((len =
ins.read(buffer)) > -1)

ous.write(buffer, 0,
len);

} finally {

ous.close();

ins.close();

}

}

} catch (Exception
e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return
"redirect:item.do";

}

 


JSP页面:

<form
name="itemForm"
id="itemForm"
action="item.do?command=upload"
enctype="multipart/form-data"
method="post">

<input
type="hidden"
name="itemNo"
value="${item.itemNo }">

<input
name="itemFile"
type="file"
class="text1"
size="40"
maxlength="40">(必须是.gif或.jpg文件)

时间: 2024-10-11 18:18:09

JSP页面/Apache FileUpload组件上传文件的同时,传递其他参数的方法的相关文章

java FileUpload 组件上传文件

Commons FileUpload Apache提供的一个组件,可以很方便的让我们处理客户端上传的文件, 下载地址 http://commons.apache.org/proper/commons-fileupload/ 下载commons-fileupload.jar,还有其依赖包 commons-io.jar一同下载好,导入工程 有点奇葩的是,在tomcat下已经把這个组建集成了,但是不能正常使用,其源码基本上是一样的. 正确的包名应该是這个:org.apache.commons.file

使用Apache fileUpload库上传文件(支持多个文件)

Spring 3.0验证通过 import org.apache.commons.fileupload.DiskFileUpload; import org.apache.commons.fileupload.FileItem; public String upload(HttpServletRequest request, HttpServletResponse response) throws Exception { String fullFileName = null; DiskFileU

使用commons-fileUpload组件上传文件

在近期的一个项目中有用到commons-fileUpload组件进行实现文件上传的功能(由于没用到框架),在使用的过程中有遇到一些问题,经过自己的琢磨也算顺利地将其解决了,在这里做个记录. 一.commons-fileUpload文件上传组件简介 commons-fileUpload上传组件是Apache的一个开源项目,可以到http://commons.apache.org/proper/commons-fileupload/下载最新版本(该组件需要commons-io包的支持).该组件使用方

上传文件到新浪云Storage的方法

上传文件到新浪云Storage的方法,兼容本地服务器 if (!empty($_FILES['sharepic']['name'])){ $tmp_file = $_FILES['sharepic']['tmp_name']; $file_types = explode(".", $_FILES['sharepic']['name']); $file_type = $file_types[count($file_types) - 1]; /*设置上传路径*/ if (isset($_S

jsp借助了ajaxfileupload实现上传文件

以往我用的上传文件都是Flex写的.近期html页面须要上传页面功能. 相比之下,比flex还是要麻烦一些,问题也多一些.这里记录下: ajax上传文件,我用到了ajaxfileupload.js修正版. <form id="addAttaForm" enctype="multipart/form-data"> <div class="row"> <label for="fileUpload"&g

django Form组件 上传文件

上传文件 注意:FORM表单提交文件要有一个参数enctype="multipart/form-data" 普通上传: urls: url(r'^f1/',views.f1), url(r'^f2/',views.f2), views: def f1(request): if request.method == "GET": return render(request,'f1.html') else: import os #导入os模块 #request.get /

使用uploadify组件上传文件

uploadify是和jQuery结合使用的异步上传组件,主要功能是批量上传文件,使用多线程来上传多个组件. 下载并导入js和样式文件 在正式学习uploadify组件之前,首先就是去官网下载最新的js和css等. http://www.uploadify.com/download/ 解压后如图:上面使用红色标示的文件是需要引入到项目中的.另外别忘了引入jquery.js文件 html页面以及上传条件的编写 <html> <head> <base href="<

ASP.NET中扩展FileUpload的上传文件的容量

ASP.NET中扩展FileUpload只能上传小的文件,大小在4MB以内的.如果是上传大一点的图片类的可以在web.config里面扩展一下大小,代码如下 <system.web> <!--配置文件上传大小,该配置是上传文件的总大小不超过15MB==15360KB,缓存阈值改为100kB,这样可以上传稍微大一点的图片--> <httpRuntime maxRequestLength="15360" requestLengthDiskThreshold=&

Extjs 使用fileupload插件上传文件 带进度条显示

一.首先我们看看官方给出的插件的解释: 一个文件上传表单项具有自定义的样式,并且可以控制按钮的文本和 像文本表单的空文本类似的其他特性. 它使用一个隐藏的文件输入元素,并在用户选择文件后 在form提交的同时执行实际的文件上传. 因为没有安全的跨浏览器以编程的方式对file表单项设值的方式, 所以标准表单项的 setValue 方法是无效的. getvalue方法的返回值取决于使用何种浏览器; 一些仅仅返回文件名, 一些返回一个完整的文件路径, 一些则返回文件的虚拟路径. 二.在我看来这个插件就