JSP上传文件时无法上传别的表单数据问题所在
在JSP中上传文件,图片的时候,我们都会在form里设置属性enctype="multipart/form-data"。这时,我们在后台servlet中使用request.getParameter()时,取不出传过来的 数据。这是因为使用了enctype="multipart/form-data"后,就说明,你要上传数据的方式是以流的形式传递,当然在servlet中就没法使用request.getParamete()了。
下面是测试的代码:
servlet的:
package org.hwq.upload;
import java.io.*;
import javax.servlet.ServletException;
import javax.servlet.ServletInputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class UploadFileAction extends HttpServlet{
public void service(HttpServletRequest request, HttpServletResponse response){
try {
String path = request.getParameter("filename");
System.out.println(path);
ServletInputStream in = request.getInputStream();
File desfile = new File("d:\\upload.txt");
OutputStream out = new FileOutputStream(desfile);
byte[] buf = new byte[1024*5];
int length = 0;
while((length=in.read(buf))!=-1){
out.write(buf);
}
out.flush();
out.close();
in.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
前台1:
<%@ page language="java" contentType="text/html; charset=GBK"
pageEncoding="GBK"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK">
<title>upload file demo</title>
</head>
<body>
<form id="form" action="/uploadfile/upload" method="post" enctype="multipart/form-data">
<input type="file" name="uploadfile"/><br>
<input type="hidden" name="filename" value="hello2fsdfsdfsdfdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff">
<input type="submit" value="提交"/>
<input type="reset" value="重置"/>
</form>
</body>
</html>
这时候后来输出了“null”,说明request.getParameter("filename")为空,没取出数据。再来看看上传上来的文件打开是什么呢?
-----------------------------7dcfa33d0c2e
Content-Disposition: form-data; name="uploadfile"; filename="C:\Documents and Settings\Administrator\桌面\upload.txt"
Content-Type: text/plain
-----------------------------7dcfa33d0c2e
Content-Disposition: form-data; name="filename"
hello2fsdfsdfsdfdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-----------------------------7dcfa33d0c2e--
在改下前台JSP页面信息:
<%@ page language="java" contentType="text/html; charset=GBK"
pageEncoding="GBK"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK">
<title>upload file demo</title>
</head>
<body>
<form id="form" action="/uploadfile/upload" method="post" enctype="multipart/form-data">
<input type="file" name="uploadfile"/><br>
<input type="submit" value="提交"/>
<input type="reset" value="重置"/>
</form>
</body>
</html>
把那行hidden删掉了,我们在看看结果会是怎么样的呢。
后台控制台还是输出null,上传文件如下:
-----------------------------7dc37a21d0c2e
Content-Disposition: form-data; name="uploadfile"; filename="C:\Documents and Settings\Administrator\桌面\upload.txt"
Content-Type: text/plain
-----------------------------7dc37a21d0c2e--
上面我上传的是同一个空文件“upload.txt”,可以看到,除了文件被转成了流的形式,其他的表单信息也转成了流的形式发给了servlet。
分享到:
相关推荐
总的来说,JspSmartUpload是一个强大的文件上传工具,它的使用极大地简化了JavaWeb开发者在处理文件上传时的代码编写。通过理解其核心概念和操作流程,我们可以轻松地实现在Web应用中的文件上传和下载功能。
在JSP中,我们通常使用`<form>`标签创建一个表单,设置`enctype`属性为`multipart/form-data`,以便处理包含文件的表单数据。当用户提交表单时,浏览器会将文件作为二进制数据发送到服务器。 ### 2. JSP文件上传...
通过这个类,我们可以获取上传文件的各种属性,如文件名、文件大小、扩展名以及文件数据等信息。 - **主要方法详解** - **1. `saveAs` 方法** - **作用**:将文件重命名或保存到指定位置。 - **原型**: - `...
4. **错误处理**:当文件上传出现问题时,应返回相应的错误信息,以便用户了解问题所在。 **二、文件下载** 1. **设置响应头**:在Servlet处理下载请求时,需要设置HTTP响应头,包括`Content-Type`(指定文件类型...
JSPSmartUpload插件就是专为JSP(Java Server Pages)设计的一个强大工具,它允许开发者轻松地在JSP页面上实现文件上传功能,特别是针对图片的上传。下面我们将深入探讨JSPSmartUpload插件的核心概念、工作原理以及...
`File` 类封装了一个上传文件的所有信息,包括文件名、文件大小、扩展名以及文件数据等信息。下面列出了一些重要的方法: 1. **saveAs:** 用于将文件另存为指定的文件名。 - 原型:`public void saveAs(String ...
5. 安全性:上传文件时必须考虑到安全性,防止恶意文件的上传,例如病毒或脚本文件。这可能涉及到文件扩展名检查、内容扫描等安全措施。 6. 用户界面:在前端,开发者需要创建一个表单让用户选择文件并提交。这可能...
- 文件上传通常涉及表单的`multipart/form-data`编码,使用`Servlet`或`Filter`解析请求,提取上传的文件并保存到服务器。 - 文件下载可以通过设置响应头信息(如`Content-Disposition`和`Content-Type`),将文件...
- 文件上传的过程中需要考虑安全性问题,如防止XSS攻击、限制上传文件类型等。 - 进度条的更新频率可以通过调整`setTimeout("process()",100);`中的时间值来控制。 - 为了提高用户体验,可以考虑增加错误提示、支持...
在开发Web应用时,我们经常会遇到用户通过上传文件与服务器进行交互的需求。在这个场景中,一个常见的错误是“java.io.IOException: Posted content type isn’t multipart/form-data”。这个问题通常发生在尝试在...
Struts2是一个流行的Java web框架,它为构建MVC(模型-视图-控制器)架构的应用程序提供了强大的支持。...通过这个案例,开发者可以深入理解Struts2的工作机制,并掌握处理用户上传文件的基本流程。
- 提供清晰的错误消息,帮助用户了解问题所在。 - 在上传过程中显示进度条,提升用户体验。 总结,`fileupLoad`包及关联包是Java EE和JSP开发中处理文件上传下载的关键工具。通过理解并正确使用这些工具,开发者...
8. **安全性**: 在处理用户上传的附件时,需要注意安全问题,如防止恶意文件的上传和执行。开发者应检查文件类型和大小,避免潜在的安全威胁。 9. **调试与优化**: 当遇到问题时,可以通过日志记录和调试工具来追踪...
在这个场景下,JSP用于构建用户界面,包括输入表单、按钮等元素,供用户上传批量数据。 - **JavaScript**:前端的主要编程语言,负责页面的交互逻辑。在批量新增功能中,JavaScript可能用于验证用户输入的数据,如...
【UEditor入门基础】是关于如何使用UEditor这款富文本编辑器进行内容初始化和前后端数据交互的基础教程。UEditor是一款强大的在线文本编辑器,常用于网页内容编辑,支持多种功能,如图片上传、视频插入等。 ### 一...
当用户在FCKeditor中编辑完内容并提交表单时,HTML内容会作为表单数据的一部分发送到后台。在JSP或Servlet中,你可以通过`request.getParameter("myEditor")`获取到编辑器中的内容,然后进行存储或进一步处理。 ###...
通过本章的学习,我们不仅掌握了Struts2的基本开发流程,还深入了解了其与Spring框架的整合应用,以及如何处理文件上传下载、表单验证等关键问题。Struts2与Spring的结合,无疑为Java Web开发提供了一个强大而灵活的...
### JSP_Struts2标签详解 #### 一、引言 在Java Web开发领域中,Struts2框架凭借其强大的功能和灵活性深受开发者喜爱。为了更高效地进行表单处理和页面展示,Struts2提供了丰富的标签库。本文将详细介绍JSP_Struts...