`

JSP上传文件时无法上传别的表单数据问题所在

 
阅读更多
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文件上传下载.zip

    总的来说,JspSmartUpload是一个强大的文件上传工具,它的使用极大地简化了JavaWeb开发者在处理文件上传时的代码编写。通过理解其核心概念和操作流程,我们可以轻松地实现在Web应用中的文件上传和下载功能。

    JSP文件上传

    在JSP中,我们通常使用`&lt;form&gt;`标签创建一个表单,设置`enctype`属性为`multipart/form-data`,以便处理包含文件的表单数据。当用户提交表单时,浏览器会将文件作为二进制数据发送到服务器。 ### 2. JSP文件上传...

    jspSmartUpload上传下载全攻略

    通过这个类,我们可以获取上传文件的各种属性,如文件名、文件大小、扩展名以及文件数据等信息。 - **主要方法详解** - **1. `saveAs` 方法** - **作用**:将文件重命名或保存到指定位置。 - **原型**: - `...

    java文件上传下载

    4. **错误处理**:当文件上传出现问题时,应返回相应的错误信息,以便用户了解问题所在。 **二、文件下载** 1. **设置响应头**:在Servlet处理下载请求时,需要设置HTTP响应头,包括`Content-Type`(指定文件类型...

    jspsmartupload插件

    JSPSmartUpload插件就是专为JSP(Java Server Pages)设计的一个强大工具,它允许开发者轻松地在JSP页面上实现文件上传功能,特别是针对图片的上传。下面我们将深入探讨JSPSmartUpload插件的核心概念、工作原理以及...

    jspSmartUpload 使用教程

    `File` 类封装了一个上传文件的所有信息,包括文件名、文件大小、扩展名以及文件数据等信息。下面列出了一些重要的方法: 1. **saveAs:** 用于将文件另存为指定的文件名。 - 原型:`public void saveAs(String ...

    jsp_upload_0.2.1.zip_java upload_upload

    5. 安全性:上传文件时必须考虑到安全性,防止恶意文件的上传,例如病毒或脚本文件。这可能涉及到文件扩展名检查、内容扫描等安全措施。 6. 用户界面:在前端,开发者需要创建一个表单让用户选择文件并提交。这可能...

    JSP中的文件操作.ppt

    - 文件上传通常涉及表单的`multipart/form-data`编码,使用`Servlet`或`Filter`解析请求,提取上传的文件并保存到服务器。 - 文件下载可以通过设置响应头信息(如`Content-Disposition`和`Content-Type`),将文件...

    struts带进度条上传

    - 文件上传的过程中需要考虑安全性问题,如防止XSS攻击、限制上传文件类型等。 - 进度条的更新频率可以通过调整`setTimeout("process()",100);`中的时间值来控制。 - 为了提高用户体验,可以考虑增加错误提示、支持...

    如何解决在jsp页面上导入.xls文件报错问题

    在开发Web应用时,我们经常会遇到用户通过上传文件与服务器进行交互的需求。在这个场景中,一个常见的错误是“java.io.IOException: Posted content type isn’t multipart/form-data”。这个问题通常发生在尝试在...

    struts2照片上传案列

    Struts2是一个流行的Java web框架,它为构建MVC(模型-视图-控制器)架构的应用程序提供了强大的支持。...通过这个案例,开发者可以深入理解Struts2的工作机制,并掌握处理用户上传文件的基本流程。

    fileupLoad包以及关联包

    - 提供清晰的错误消息,帮助用户了解问题所在。 - 在上传过程中显示进度条,提升用户体验。 总结,`fileupLoad`包及关联包是Java EE和JSP开发中处理文件上传下载的关键工具。通过理解并正确使用这些工具,开发者...

    jsp/servlet javamail 发送邮件 可发送多个附件

    8. **安全性**: 在处理用户上传的附件时,需要注意安全问题,如防止恶意文件的上传和执行。开发者应检查文件类型和大小,避免潜在的安全威胁。 9. **调试与优化**: 当遇到问题时,可以通过日志记录和调试工具来追踪...

    用于页面进行批量新增功能

    在这个场景下,JSP用于构建用户界面,包括输入表单、按钮等元素,供用户上传批量数据。 - **JavaScript**:前端的主要编程语言,负责页面的交互逻辑。在批量新增功能中,JavaScript可能用于验证用户输入的数据,如...

    UEditor入门基础

    【UEditor入门基础】是关于如何使用UEditor这款富文本编辑器进行内容初始化和前后端数据交互的基础教程。UEditor是一款强大的在线文本编辑器,常用于网页内容编辑,支持多种功能,如图片上传、视频插入等。 ### 一...

    FCKEditor实例

    当用户在FCKeditor中编辑完内容并提交表单时,HTML内容会作为表单数据的一部分发送到后台。在JSP或Servlet中,你可以通过`request.getParameter("myEditor")`获取到编辑器中的内容,然后进行存储或进一步处理。 ###...

    struts2

    通过本章的学习,我们不仅掌握了Struts2的基本开发流程,还深入了解了其与Spring框架的整合应用,以及如何处理文件上传下载、表单验证等关键问题。Struts2与Spring的结合,无疑为Java Web开发提供了一个强大而灵活的...

    JSP_struts2标签大全.doc

    ### JSP_Struts2标签详解 #### 一、引言 在Java Web开发领域中,Struts2框架凭借其强大的功能和灵活性深受开发者喜爱。为了更高效地进行表单处理和页面展示,Struts2提供了丰富的标签库。本文将详细介绍JSP_Struts...

Global site tag (gtag.js) - Google Analytics