批量上传文件到服务器
利用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>
相关推荐
在文件批量上传的服务器端,我们可以创建一个QTcpServer实例,设置监听端口,并在有新的连接请求时触发相应的槽函数,以便处理客户端的连接。 2. **QTcpSocket**: QTcpSocket类是用于建立和管理TCP连接的。在客户端...
在IT行业中,尤其是在系统管理或开发环境中,批量上传文件到Linux服务器是一项常见的任务。这通常涉及到将一组文件从本地计算机高效地传输到多台远程Linux服务器。为了实现这一目标,我们需要掌握一些关键技术和工具...
### C# WinForm 上传图片文件到服务器的方法 在C# WinForm开发中,上传文件尤其是图片文件到服务器是一项常见的需求。本文将详细介绍如何利用C#实现这一功能,并结合提供的部分代码示例进行深入解析。 #### 一、...
基于C#MVC-WEBAPI实现的文件批量上传服务器源代码,客户端通过form表单或ajax提交参数及文件,本程序负责接收并处理请求:将文件根据时间戳重命名后存入指定目录,并将参数与文件一一对应后存入mysql数据库,代码简洁,4-...
可以使用`HttpPostedFileBase`类来处理每个上传的文件,读取文件内容,然后将其保存到服务器的指定目录。同时,我们还需要处理可能出现的错误,如文件类型限制、大小超出限制等。 `uploadFiles`目录很可能是用于...
综上所述,这个资源提供了从客户端到服务器端完整的文件批量上传解决方案,对于开发者来说是一个很好的学习实例,可以快速应用到实际项目中。同时,其包含的进度条功能,使得文件上传过程更加友好,提升了用户交互...
在EXTJS中,实现批量上传文件是一项常见的需求,尤其在处理大量数据或媒体文件时。EXTJS的文件上传组件提供了方便的方式来处理这些任务,允许用户一次性选择多个文件进行上传,极大地提高了工作效率。 批量上传文件...
根据提供的文件信息,本文将详细解释如何在C# WinForm应用程序中实现图片文件上传到服务器的功能。这主要包括两部分:一部分是服务器端处理文件上传的`Uploader.ashx`文件,另一部分是客户端用于发送文件的WinForm...
在Java开发中,文件批量上传是一项常见的功能,尤其在企业级应用中,用户可能需要上传大量数据或文件。本教程将介绍如何利用SWF(Simple Workflow)和EXT库来实现这一功能。SWF是一个用于创建富互联网应用程序的前端...
在IT行业中,批量上传文件是一项常见的任务,尤其是在大数据传输或者文件管理系统中。为了提供良好的用户体验,通常会结合进度条功能,让用户能够实时了解文件上传的状态。在这个场景下,"批量上传文件带进度条"主要...
Uploadify是一款广泛应用于Web开发中的前端文件上传插件,它支持多文件选择、批量上传、进度条显示等功能,极大地优化了用户在网页上上传文件的体验。本文将深入探讨Uploadify的工作原理、主要特点以及如何在项目中...
这可能需要对每个文件创建单独的请求,或者使用支持批量上传的API。 10. **RESTful服务**:如果服务器端提供的是RESTful接口,那么上传文件通常会通过POST请求实现,其中Content-Type为multipart/form-data,并在...
在上传文件时,通常会将文件内容转换为字节数组,然后通过Socket发送到服务器。文件的读取和写入需要注意编码格式,以防止出现乱码问题,这里提到的UTF-8格式确保了跨平台的文本兼容性。 3. **批量**: 批量上传...
《jQuery文件批量上传控件详解》 在网页开发中,用户交互体验的提升往往离不开高效、便捷的文件上传功能。jQuery作为一个广泛使用的JavaScript库,提供了丰富的插件来增强这一功能,其中“jQuery文件批量上传控件”...
批量上传文件的核心技术主要包括HTML表单、JavaScript验证和服务器端的处理。首先,我们需要在HTML页面中创建一个表单,包含一个文件输入控件(`<input type="file" />`),通过设置其`multiple`属性,允许用户选择...
标题“文件批量上传 tp+layui”表明我们要讨论的是一个基于ThinkPHP(简称tp)框架和Layui前端组件库实现的文件批量上传功能。Layui是一个轻量级的前端框架,提供了丰富的UI组件,而ThinkPHP则是一个流行的PHP开发...
在批量上传场景中,Flash允许用户在浏览器端选择并打包多个文件,然后通过HTTP POST请求将数据发送到服务器。 2. **ActionScript**:Flash的编程语言,用于编写Flash应用的逻辑。在批量上传插件中,ActionScript...
在这个“jquery批量上传文件实例工程”中,我们聚焦于利用jQuery实现文件的批量上传,并且带有进度条功能,这在现代网页应用中是非常实用的功能,尤其对于处理大量数据或媒体文件的网站来说。 批量文件上传是一种...
ASP批量上传文件是一种在Web应用中处理大量文件上传的技术,尤其适用于需要用户一次性提交多份文件的场景。在这个ASP(Active Server Pages)示例中,结合了Flash技术来实现文件的上传并显示上传进度条,提供了更好...
bat脚本实现将Windows文件上传至Linux服务器 不同选项实现具体功能、检查资源存在 、 确认上传