`
afeifqh
  • 浏览: 118702 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

fileupload包实现上传需要小心的地方

阅读更多
最近用fileupload包做上传下载,被file类型和非file表单类型的获取文件名和文件获取表单值给弄混了,在这写一下自己的总结!
  
        自己就做了一个小例子(用servlet)如下:

up.jsp
<form action="/struts2/uploadServlet" method="post" enctype="multipart/form-data">
     filename:<input type="text" name="name">
     <br>
     file1:<input type="file"  name="file1"><br/>
     file2:<input type="file" name="file2"><br>
   <input type="submit" value="submit">


uploadServlet.java

public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		
		
		DiskFileItemFactory disk=new DiskFileItemFactory();//new一个磁盘文件条目工厂对象
		String path=request.getRealPath("/upload");
		disk.setRepository(new File(path));//设置临时文件
		disk.setSizeThreshold(1024*1024);//设置放在内存中的最大容量,超过了则放置在临时文件里
		ServletFileUpload upload=new ServletFileUpload(disk);//构造了一个上传文件的上传类
		
		try {
			List<FileItem> list=upload.parseRequest(request);
			 
			for(FileItem file:list){
				if(file.isFormField()){//判断是否是除了file类型外的其他表单
					String name=file.getFieldName();//得到简单类型表单的name
					String value=file.getString("gbk");
					System.out.println(name);//check!
					request.setAttribute(name,value);
				}else
				{
					 
					String name=file.getFieldName();//得到file类型表单的name
					System.out.println(name);
					String value=file.getName();//得到表单里的值(就是那个全路径)
					System.out.print(value);
					//保证取得的名字是文件名,而不包括文件的路径
					int tag=value.lastIndexOf("\\");
					String filename=value.substring(tag+1);
					
					System.out.println(filename);
					request.setAttribute(name,filename);
					
					//System.out.println("in servlet");//check!
					
					file.write(new File(path,filename));
				    	
				}
				
			}
			
			
		} catch (FileUploadException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		request.getRequestDispatcher("upload/MyJsp.jsp").forward(request,response);
		
		
		
	}


获取表单名都是用getFileName()方法
这里最关键的是 是非file表单用getString("encoding")来获得表单的value
而file表单则用getName()方法来获取file表单的value (感觉这个方法取名不太合理啊!误导人啊!)



MyJsp.jsp


name:${requestScope.name}<br>
    file:${requestScope.file1}<br>
    file2:${requestScope.file2}<br>



0
1
分享到:
评论

相关推荐

    FileUpload

    "FileUpload"这个标题和描述提到了这一关键操作,下面我们将深入探讨文件上传的相关知识点,以及如何实现这一功能。 1. **HTTP协议与文件上传**:文件上传是基于HTTP协议进行的,尤其是HTTP的POST方法。在POST请求...

    支持断点续传的上传组件FileUpload

    在本文中,我们将深入探讨支持断点续传的上传组件——FileUpload,以及如何利用它来实现高效、可靠的文件上传。 FileUpload组件是专为.NET平台设计的,它集成了ASP.NET框架,能够提供服务器端的稳定支持。通过这个...

    .NET MVC实现文件上传

    首先,我们需要理解.NET MVC中的控制器(Controller)是处理用户请求的地方。在文件上传场景中,控制器会接收HTTP POST请求,该请求包含了待上传的文件数据。创建一个名为`FileUploadController`的控制器,并在其中...

    用apache fileupload 实现基于http协议的断点续传,断点上载,含测试用的客户端

    2. **配置FileUpload**:在Servlet中,你需要配置FileUpload,指定临时存储上传文件的位置,以及如何处理大文件(例如,是否分块存储)。 3. **处理Range请求头**:当接收到带有"Range"字段的请求时,Servlet需要...

    fileupload实现断点续传,大家看看

    对于Web应用,前端可能需要与后端API进行交互,通过Ajax请求实现分块上传。后端则需要处理这些特殊的HTTP请求,并确保数据的正确合并。 5. 注意事项 - 文件的完整性验证:在断点续传完成后,服务器需要校验整个...

    ckfinder_java.jar解决2.6中没有com.ckfinder.connector.FileUploadFilter 找不到

    4. **更新引用**:如果`FileUploadFilter`被移到了其他地方或者改名,检查官方文档或更新日志,确认新位置并更新代码中的引用。 5. **社区支持**:如果官方没有明确的解决方案,可以在CKFinder的社区论坛上寻求帮助...

    java 图片上传系统 common-fileUpload

    Java 图片上传系统基于 `common-fileUpload` 模块实现,这是一个常见的用于处理文件上传的Java库。在Java Web开发中,文件上传功能是必不可少的一部分,尤其在涉及到用户提交图片时。`common-fileUpload` 是Apache ...

    Web_JSP_FileUpload.zip_fileupload

    【标题】"Web_JSP_FileUpload.zip_fileupload" 涉及的知识点主要集中在Web开发中的JSP(JavaServer Pages)文件上传功能。文件上传是Web应用中常见的一种交互方式,用户可以上传图片、文档等文件到服务器进行存储或...

    Commons-FileUpload

    然而,处理这些多部分数据需要复杂的解析工作,这就是Apache Commons FileUpload发挥作用的地方。 Apache Commons FileUpload库的主要功能包括: 1. **解析多部分请求**:它能解析HTTP请求中的多部分数据,将每个...

    commons-fileupload-1.2.1-bin

    Apache Commons FileUpload是一个Java库,专门用于处理HTTP协议中的文件上传功能。这个库是Apache软件基金会 Commons项目的一...在使用时,开发者应根据项目需求正确配置和集成此库,以实现高效且可靠的文件上传功能。

    commons-fileupload-1.2.1.jar

    - 文件上传服务:在Web应用中,FileUpload常用于实现文件上传功能,处理用户提交的图片、文档等。 - 多文件上传:支持同时上传多个文件,只需将它们作为`multipart/form-data`请求的一部分发送。 - 分块上传:...

    C#通用文件上传类(指定FileUpload控件文件)

    为了实现文件上传,我们需要在服务器端编写处理文件上传的代码。 以下是一个基本的文件上传类的结构: ```csharp public class FileUploader { private string _uploadPath; public FileUploader(string ...

    fileupload.rar

    【标题】"fileupload.rar" 是一个压缩包文件,它包含了一个基于百度WebUploader实现的文件上传示例项目。WebUploader是一款优秀的JavaScript组件,专为处理大文件上传、断点续传以及文件分片功能而设计。这个压缩包...

    fileupload.zip

    "fileupload.zip"这个压缩包文件显然包含了一个实现文件上传下载功能的示例项目,名为"WindowsFormsApplication2",我们可以推测这可能是一个基于C#的Windows Forms应用程序。 文件上传和下载主要涉及到以下几个...

    上传下载需要的两个包

    标题中的“上传下载需要的两个包”指的是在Java开发中处理文件上传和下载时常用的两个类库,即`commons-fileupload-1.2.jar`和`commons-io-1.3.1.jar`。这两个库是Apache Commons项目的一部分,为开发者提供了便捷的...

    java实现的上传大文件以及压缩包,并且支持断点续传-上传大文件.zip

    在Java编程环境中,实现大文件上传以及压缩包处理是一项常见的任务,特别是在开发Web应用或文件管理系统时。这个项目的关键在于优化文件传输效率,确保稳定性和可靠性,尤其是支持断点续传功能,使得在网络不稳定...

    java上传下载所需jar包及代码示例

    这份资源包含了一份使用Java实现上传和下载功能的代码示例以及必要的库文件。我们将详细探讨这两个关键知识点:Java Web上传和下载。 一、Java Web上传 1. **Servlet API**:在Java Web中,Servlet API提供了处理...

    javaweb简单实现文件上传与下载源代码

    总之,JavaWeb中的文件上传和下载涉及到多个环节,从客户端的表单提交到服务器端的处理和存储,再到客户端的下载,每个步骤都需要仔细设计和实现,确保系统的安全性和稳定性。提供的源代码可以作为一个基础模板,...

    java实现一种多文件上传的方法

    在Java编程语言中,实现多文件上传是一种常见的需求,特别是在Web应用中,用户可能需要上传一组文件,如图片、文档等。本篇文章将详细介绍如何利用HTML5的`multiple`属性和Java后端处理多文件上传的策略。 首先,...

    文件上传_commonsfileupload.1.2.1.zip

    标题中的"文件上传_commonsfileupload.1.2.1.zip"表明这是一个关于Apache Commons FileUpload库的1.2.1版本的压缩包。Apache Commons FileUpload是一个Java库,专门用于处理HTTP请求中的多部分/form-data数据,也...

Global site tag (gtag.js) - Google Analytics