`
TableMiao
  • 浏览: 75411 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

批量上传文件到服务器

阅读更多

批量上传文件到服务器

         利用MultipartFormDataInput实现。

           简单说明:MultipartFormDataInput会读取multipart/form-data类型数据过来的head和body,且以特定符号分割里面的内容,

                   利用测试工具fiddler 测试上传接口就会发现  选择需要上传的文档时候会以一定格式分割。

 

            比如我们上传两个文件到服务器上

 

      实现代码:

          

       @POST
	@Path("/upload")
	@Consumes("multipart/form-data")
	@Produces("text/plain; charset=utf-8")
	public synchronized String manyFileUpload(MultipartFormDataInput input) throws Exception {
		 logger.info("开始上传多个文件---------");
		
                 //获取head和body所有数据,返回一个list,上传单个文件的时候 直接get0 get1即可得到文件名和上传的内容
		 logger.debug("读取文件头1:{}",input.getParts());
		// logger.debug("读取文件头2:{}",input.getFormData());
                 //获取获取head和body所有数据,返回一个map,可通过key来获取指定的head或body内容
		 logger.debug("读取文件头3:{}",input.getFormDataMap());
		 logger.debug("读取文件头4:{}",input.getPreamble());
		
		Map<String, List<InputPart>> uploadForm = input.getFormDataMap();
		List<InputPart> bodys = uploadForm.get("Filedata");//得到上传文件的内容
		List<InputPart> heads = uploadForm.get("fileName");//得到上传文件的名称,主要获取后缀
	
		//定义上传服务器的路径
		String webPath = "D:/ccc/cc/cc-ws/src/main/webapp/upload";
		
		String fileNames = null;
		
     	//获取上传文件头和内容的总数,除以2就是要生成文件的个数(因为上传文件都是文件名和文件内容成对出现,如果多个附件一个文件名,传两遍文件名,
           上传服务器的保存的时候加上年月日时分秒,分辨附件,方便对应下载)
     	for(int i=0;i<input.getParts().size()/2;i++){
     		InputPart body = bodys.get(i);
     		InputPart head = heads.get(i);
     		//读取头,获取文件名
     		InputStream is = head.getBody(InputStream.class,
					 null);
			 //读取一遍名字
			 ByteArrayOutputStream baos = new ByteArrayOutputStream();
			 int j = -1;
			 while ((j = is.read()) != -1) {
				 baos.write(j);
			 }
                         //中文名字转码,根据需要转格式,也许是utf-8
			 String fileName  = baos.toString("GBK");
			 
			 //得到上传文件保存的路径
			 String realFile = webPath + File.separator + fileName;
			 
			 //读取内容,写入文件输出
			 InputStream inputStream = body.getBody(InputStream.class,
					 null);
			 File file = new File(realFile);
			 FileUtils.copyInputStreamToFile(inputStream, file);
			 logger.info("上传保存文件成功   返回生成的文件名:	{}  , 真实路径 :	{}", fileName,
					 realFile);
			 if(fileNames == null)
				 fileNames = fileName;
			 else
				 fileNames = fileNames+"||"+fileName;
     	}
     	//根据具体需求返回结果
     	 return fileNames;
     	
	}

 
           测试代码:

              采用html测试,即上图

<html>  
  <head>  
    <base href="<%=basePath%>">  
      
    <title>My JSP 'fileupload.jsp' starting page</title>  
      
    <meta http-equiv="pragma" content="no-cache">  
    <meta http-equiv="cache-control" content="no-cache">  
    <meta http-equiv="expires" content="0">      
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">  
    <meta http-equiv="description" content="This is my page">  

  </head>  
    
  <body>  
     <!-- enctype 默认是 application/x-www-form-urlencoded    action  对应接口地址  input标签中的name对应文件名与内容-->  
     <form action="http://localhost:8080/cc/excel/upload" 
              enctype="multipart/form-data" method="post">  
          
       <h4>批量上传 </h4> 
                注:文件名为上传附件的名字 <br/>  
               文件名:<input type="text" name="fileName"> 附件:<input type="file"  name="Filedata"><br/>  
               文件名:<input type="text" name="fileName"> 附件:<input type="file" name="Filedata"><br/>  
              <input type="submit" value="提交"/>       
     </form>  
   
  </body>  
</html> 

 

 

  • 大小: 61.5 KB
1
3
分享到:
评论

相关推荐

    QT开发Socket实现文件批量上传源码

    在文件批量上传的服务器端,我们可以创建一个QTcpServer实例,设置监听端口,并在有新的连接请求时触发相应的槽函数,以便处理客户端的连接。 2. **QTcpSocket**: QTcpSocket类是用于建立和管理TCP连接的。在客户端...

    批量上传文件到Linux服务器

    在IT行业中,尤其是在系统管理或开发环境中,批量上传文件到Linux服务器是一项常见的任务。这通常涉及到将一组文件从本地计算机高效地传输到多台远程Linux服务器。为了实现这一目标,我们需要掌握一些关键技术和工具...

    C# WinForm 上传图片 文件到服务器的方法

    ### C# WinForm 上传图片文件到服务器的方法 在C# WinForm开发中,上传文件尤其是图片文件到服务器是一项常见的需求。本文将详细介绍如何利用C#实现这一功能,并结合提供的部分代码示例进行深入解析。 #### 一、...

    C#文件批量上传服务器源码

    基于C#MVC-WEBAPI实现的文件批量上传服务器源代码,客户端通过form表单或ajax提交参数及文件,本程序负责接收并处理请求:将文件根据时间戳重命名后存入指定目录,并将参数与文件一一对应后存入mysql数据库,代码简洁,4-...

    asp.net 批量上传文件

    可以使用`HttpPostedFileBase`类来处理每个上传的文件,读取文件内容,然后将其保存到服务器的指定目录。同时,我们还需要处理可能出现的错误,如文件类型限制、大小超出限制等。 `uploadFiles`目录很可能是用于...

    三种文件批量上传方法 包含服务器端代码 带进度条

    综上所述,这个资源提供了从客户端到服务器端完整的文件批量上传解决方案,对于开发者来说是一个很好的学习实例,可以快速应用到实际项目中。同时,其包含的进度条功能,使得文件上传过程更加友好,提升了用户交互...

    批量上传文件 EXTJS文件上传 上传组件

    在EXTJS中,实现批量上传文件是一项常见的需求,尤其在处理大量数据或媒体文件时。EXTJS的文件上传组件提供了方便的方式来处理这些任务,允许用户一次性选择多个文件进行上传,极大地提高了工作效率。 批量上传文件...

    C# WinForm 上传图片 文件到服务器的方法Uploader ashx.txt

    根据提供的文件信息,本文将详细解释如何在C# WinForm应用程序中实现图片文件上传到服务器的功能。这主要包括两部分:一部分是服务器端处理文件上传的`Uploader.ashx`文件,另一部分是客户端用于发送文件的WinForm...

    java实现文件批量上传

    在Java开发中,文件批量上传是一项常见的功能,尤其在企业级应用中,用户可能需要上传大量数据或文件。本教程将介绍如何利用SWF(Simple Workflow)和EXT库来实现这一功能。SWF是一个用于创建富互联网应用程序的前端...

    批量上传文件带进度条

    在IT行业中,批量上传文件是一项常见的任务,尤其是在大数据传输或者文件管理系统中。为了提供良好的用户体验,通常会结合进度条功能,让用户能够实时了解文件上传的状态。在这个场景下,"批量上传文件带进度条"主要...

    uploadify 批量上传文件

    Uploadify是一款广泛应用于Web开发中的前端文件上传插件,它支持多文件选择、批量上传、进度条显示等功能,极大地优化了用户在网页上上传文件的体验。本文将深入探讨Uploadify的工作原理、主要特点以及如何在项目中...

    java上传文件到服务器

    这可能需要对每个文件创建单独的请求,或者使用支持批量上传的API。 10. **RESTful服务**:如果服务器端提供的是RESTful接口,那么上传文件通常会通过POST请求实现,其中Content-Type为multipart/form-data,并在...

    C#Socket编程定时批量上传文件示例

    在上传文件时,通常会将文件内容转换为字节数组,然后通过Socket发送到服务器。文件的读取和写入需要注意编码格式,以防止出现乱码问题,这里提到的UTF-8格式确保了跨平台的文本兼容性。 3. **批量**: 批量上传...

    jquery 文件批量上传控件

    《jQuery文件批量上传控件详解》 在网页开发中,用户交互体验的提升往往离不开高效、便捷的文件上传功能。jQuery作为一个广泛使用的JavaScript库,提供了丰富的插件来增强这一功能,其中“jQuery文件批量上传控件”...

    ASP————批量上传文件

    批量上传文件的核心技术主要包括HTML表单、JavaScript验证和服务器端的处理。首先,我们需要在HTML页面中创建一个表单,包含一个文件输入控件(`&lt;input type="file" /&gt;`),通过设置其`multiple`属性,允许用户选择...

    文件批量上传 tp+layui

    标题“文件批量上传 tp+layui”表明我们要讨论的是一个基于ThinkPHP(简称tp)框架和Layui前端组件库实现的文件批量上传功能。Layui是一个轻量级的前端框架,提供了丰富的UI组件,而ThinkPHP则是一个流行的PHP开发...

    flash批量上传文件

    在批量上传场景中,Flash允许用户在浏览器端选择并打包多个文件,然后通过HTTP POST请求将数据发送到服务器。 2. **ActionScript**:Flash的编程语言,用于编写Flash应用的逻辑。在批量上传插件中,ActionScript...

    jquery批量上传文件实例工程

    在这个“jquery批量上传文件实例工程”中,我们聚焦于利用jQuery实现文件的批量上传,并且带有进度条功能,这在现代网页应用中是非常实用的功能,尤其对于处理大量数据或媒体文件的网站来说。 批量文件上传是一种...

    ASP批量上传文件(或显示进度条)

    ASP批量上传文件是一种在Web应用中处理大量文件上传的技术,尤其适用于需要用户一次性提交多份文件的场景。在这个ASP(Active Server Pages)示例中,结合了Flash技术来实现文件的上传并显示上传进度条,提供了更好...

    bat脚本实现上传文件至Linux服务器

    bat脚本实现将Windows文件上传至Linux服务器 不同选项实现具体功能、检查资源存在 、 确认上传

Global site tag (gtag.js) - Google Analytics