FileUpload相关资料

合集下载

FileUpLoad控件

FileUpLoad控件

FileUpload控件
③ 将该文件保存到指定的位置。可以调用HttpPostedFile对象的 SaveAs方法。或者,还可以使用HttpPostedFile对象的InputStream属性, 以字节数组或流形式管理已上载的文件。 (4)双击Button1,在Click事件的处理程序中,按照步骤(3)的操 作流程为其添加代码。代码如下: protected void Button1_Click(object sender, EventArgs e) { bool fileOK = false; String path = Server.MapPath("~/UploadedImages/"); if (FileUpload1.HasFile) { String fileExtension = System.IO.Path.GetExtension(FileUpload1.FileName).ToLower(); String[] allowedExtensions = {".gif", ".png", ".jpeg", ".jpg"}; for (int i = 0; i < allowedExtensions.Length; i++) if (fileExtension == allowedExtensions[i])
FileUpload控件
FileUpload控件也称文件上传控件,它能选择客户端文件, 上传到服务器端。
客户端所选文件上传到服务端的什么位置时,与客户端文 件的路径没有什么关系
FileUpload控件
可以通过FileUpload的一些重要属性访问上传的文件。 (1)FileName属性。FileName属性用来获取客户端上使用 FileUpload控件上传文件的名称。此属性返回的文件名不包含 此文件在客户端上的路径。 (2)FileBytes属性。FileBytes属性从使用FileUpload控件指 定的文件返回一个字节数组,包含了指定文件的内容。 (3)FileContent属性。FileContent属性获取Stream对象, 该对象指向使用FileUpload控件上传的文件。可以使用 FileContent属性来访问文件的内容。例如,可以使用该属性返 回的Stream对象以字节方式读取文件内容并将它们存储在一个 字节数组中。

jqueryfileupload示例

jqueryfileupload示例

jqueryfileupload⽰例原⽂链接:/qq_37936542/article/details/79258158jquery file upload是⼀款实⽤的上传⽂件插件,项⽬中刚好⽤到,在这⾥记录分享⼀下。

⼀:准备相关js⽂件jquery file upload 下载地址:点击下⾯红圈中的按钮下载jquery.js下载地址:⼆:导⼊js⽂件注意:js⽂件引⼊的先后顺序不可以乱[html]1. <script src="https:///jquery-3.2.1.min.js"></script>2. <!-- jquery file upload相关js -->3. <script src="js/jquery.ui.widget.js"></script>4. <script src="js/jquery.iframe-transport.js"></script>5. <script src="js/jquery.fileupload.js"></script>6. <script src="js/jquery.fileupload-process.js"></script>7. <script src="js/jquery.fileupload-validate.js"></script>三:jsp代码[html]1. <style>2. /* input样式 */3. #uploadImg{4. display: none;5. }6.7. /* button样式 */8. #chooseFile{9. background: #93b6fc;10. }11.12. #uploadFile,#rechooseFile {13. display: none;14. background: #93b6fc;15. }16.17. #image{18. width:200px;20. }21.22. /* 进度条样式 */23. .bar {24. background-image: -webkit-linear-gradient(top,#5cb85c 0,#449d44 100%);25. background-image: -o-linear-gradient(top,#5cb85c 0,#449d44 100%);26. background-image: -webkit-gradient(linear,left top,left bottom,from(#5cb85c),to(#449d44));27. background-image: linear-gradient(to bottom,#5cb85c 0,#449d44 100%);28. filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);29. background-repeat: repeat-x;30. height: 20px;31. line-height: 20px;32. -webkit-box-shadow: inset 0 -1px 0 rgba(0,0,0,.15);33. box-shadow: inset 0 -1px 0 rgba(0,0,0,.15);34. -webkit-transition: width .6s ease;35. -o-transition: width .6s ease;36. transition: width .6s ease;37. }38. #progress {39. filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);40. background-repeat: repeat-x;41. height: 20px;42. width: 0%;43. margin-bottom: 20px;44. overflow: hidden;45. background-color: #f5f5f5;46. border-radius: 4px;47. -webkit-box-shadow: inset 0 1px 2px rgba(0,0,0,.1);48. box-shadow: inset 0 1px 2px rgba(0,0,0,.1);49. margin-top: 20px;50. }51. </style>52. <body>53. <div class="jquery-fileupload">54. <div class="">55. <input id="uploadImg" type="file" name="uploadImg" multiple style="display: none" />56. <button id="chooseFile">+选择⽂件</button>57. <button id="uploadFile">~开始上传</button>58. <button id="rechooseFile">+重新选择</button>59. </div>60. <div>61. <img id="image" src="">62. </div>63. <div id="progress">64. <div class="bar" style="width: 0%;"></div>65. </div>66. </div>67. </body>四:js代码[html]1. $(function() {2.3. $("#chooseFile").on("click", function() {4. $("#uploadImg").click();5. });6.7. $('#uploadImg').fileupload({8. url : '/FileTest/upload',//请求发送的⽬标地址9. Type : 'POST',//请求⽅式,可以选择POST,PUT或者PATCH,默认POST10. //dataType : 'json',//服务器返回的数据类型11. autoUpload : false,12. acceptFileTypes : /(gif|jpe?g|png)$/i,//验证图⽚格式13. maxNumberOfFiles : 1,//最⼤上传⽂件数⽬14. maxFileSize : 1000000, // ⽂件上限1MB17. acceptFileTypes : '⽂件类型不匹配',18. maxFileSize : '⽂件过⼤',19. minFileSize : '⽂件过⼩'20. }21. })22. //图⽚添加完成后触发的事件23. .on("fileuploadadd", function(e, data) {24. //validate(data.files[0])这⾥也可以⼿动来验证⽂件格式和⼤⼩25.26. //隐藏或显⽰页⾯元素27. $('#progress .bar').css(28. 'width', '0%'29. );30. $('#progress').hide();31. $("#chooseFile").hide();32. $("#uploadFile").show();33. $("#rechooseFile").show();34.35. //获取图⽚路径并显⽰36. var url = getUrl(data.files[0]);37. $("#image").attr("src", url);38.39. //绑定开始上传事件40. $('#uploadFile').click(function() {41. $("#uploadFile").hide();42. jqXHR = data.submit();43. //解绑,防⽌重复执⾏44. $("#uploadFile").off("click");45. })46.47. //绑定点击重选事件48. $("#rechooseFile").click(function(){49. $("#uploadImg").click();50. //解绑,防⽌重复执⾏51. $("#rechooseFile").off("click");52. })53. })54. //当⼀个单独的⽂件处理队列结束触发(验证⽂件格式和⼤⼩)55. .on("fileuploadprocessalways", function(e, data) {56. //获取⽂件57. file = data.files[0];58. //获取错误信息59. if (file.error) {60. console.log(file.error);61. $("#uploadFile").hide();62. }63. })64. //显⽰上传进度条65. .on("fileuploadprogressall", function(e, data) {66. $('#progress').show();67. var progress = parseInt(data.loaded / data.total * 100, 10);68. $('#progress').css(69. 'width','15%'70. );71. $('#progress .bar').css(72. 'width',progress + '%'73. );74. })75. //上传请求失败时触发的回调函数76. .on("fileuploadfail", function(e, data) {77. console.log(data.errorThrown);78. })79. //上传请求成功时触发的回调函数80. .on("fileuploaddone", function(e, data) {81. alert(data.result);82.83. })84. //上传请求结束后,不管成功,错误或者中⽌都会被触发87. })88.89.90. //⼿动验证91. function validate(file) {92. //获取⽂件名称93. var fileName = ;94. //验证图⽚格式95. if (!/.(gif|jpg|jpeg|png|gif|jpg|png)$/.test(fileName)) {96. console.log("⽂件格式不正确");97. return true;98. }99. //验证excell表格式100. /* if(!/.(xls|xlsx)$/.test(fileName)){101. alert("⽂件格式不正确");102. return true;103. } */104.105. //获取⽂件⼤⼩106. var fileSize = file.size;107. if (fileSize > 1024 * 1024) {108. alert("⽂件不得⼤于⼀兆")109. return true;110. }111. return false;112. }113.114. //获取图⽚地址115. function getUrl(file) {116. var url = null;117. if (window.createObjectURL != undefined) {118. url = window.createObjectURL(file);119. } else if (window.URL != undefined) {120. url = window.URL.createObjectURL(file);121. } else if (window.webkitURL != undefined) {122. url = window.webkitURL.createObjectURL(file);123. }124. return url;125. }126.127. });五:服务器端代码1:导⼊依赖[html]1. <dependency>2. <groupId>commons-fileupload</groupId>3. <artifactId>commons-fileupload</artifactId>4. <version>1.3.1</version>5. </dependency>2:配置springmvc上传解析器[html]1. <!-- springmvc⽂件上传解析器 -->2. <bean id="multipartResolver"3. class="monsMultipartResolver">4. <property name="defaultEncoding" value="UTF-8" />5. <property name="maxUploadSize" value="-1" />6. </bean>[html]1. package com.mote.upload;2.3. import java.io.File;4. import java.io.IOException;5. import java.io.InputStream;6. import java.text.SimpleDateFormat;7. import java.util.Date;8.9. import javax.servlet.http.HttpServletRequest;10.11. import mons.io.FileUtils;12. import org.springframework.stereotype.Controller;13. import org.springframework.web.bind.annotation.RequestMapping;14. import org.springframework.web.bind.annotation.RequestMethod;15. import org.springframework.web.bind.annotation.RequestParam;16. import org.springframework.web.bind.annotation.ResponseBody;17. import org.springframework.web.multipart.MultipartFile;18.19. @Controller20. public class FileUploadController {21.22. /**23. * 将图⽚上传到服务器根⽬录下24. * @param @param multipartFile25. * @param @param request26. * @param @return27. * @return String28. * @throws29. */30. @RequestMapping(value = "/upload",method=RequestMethod.POST)31. @ResponseBody32. public String upload(33. @RequestParam("uploadImg") MultipartFile multipartFile,34. HttpServletRequest request) {35. try {36. //获取项⽬路径37. String realPath = request.getSession().getServletContext()38. .getRealPath("");39. InputStream inputStream = multipartFile.getInputStream();40. String contextPath = request.getContextPath();41. //服务器根⽬录的路径42. String path = realPath.replace(contextPath.substring(1), "");43. //根⽬录下新建⽂件夹upload,存放上传图⽚44. String uploadPath = path + "upload";45. //获取⽂件名称46. String filename = getUploadFileName(multipartFile);47. //将⽂件上传的服务器根⽬录下的upload⽂件夹48. File file = new File(uploadPath, filename);49. FileUtils.copyInputStreamToFile(inputStream, file);50. //返回图⽚访问路径51. String url = request.getScheme() + "://" + request.getServerName()52. + ":" + request.getServerPort() + "/upload/" + filename;53. return url;54. } catch (IOException e) {55. e.printStackTrace();56. }57. return null;58.59. }60.61.62. /**63. * 获取上传⽂件的名称,新⽂件名为原⽂件名加上时间戳64. *65. * @param multipartFile66. * multipartFile67. * @return ⽂件名69. private String getUploadFileName(MultipartFile multipartFile) {70. String uploadFileName = multipartFile.getOriginalFilename();71. String fileName = uploadFileName.substring(0,72. stIndexOf("."));73. String type = uploadFileName.substring(stIndexOf("."));74. SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");75. String timeStr = sdf.format(new Date());76. String name = fileName + "_" + timeStr + type;77. return name;78. }79.80. }⽂末福利:福利⼀:前端,Java,产品经理,微信⼩程序,Python等8G资源合集⼤放送:福利⼆:微信⼩程序⼊门与实战全套详细视频教程领取⽅式:如果需要学习视频,欢迎关注【编程微刊】微信公众号,回复【领取资源】⼀键领取以下所有⼲货资源,获取更多有⽤技术⼲货、⽂档资料。

fileupload filetypeexts

fileupload filetypeexts

fileupload filetypeexts
在文件上传的场景中,`fileTypeExts`是一种常见的属性或参数,通常用于限制用户能够上传的文件类型。

这个属性通常指定允许上传的文件扩展名(文件类型),以确保只接受特定类型的文件。

这样可以增加系统的安全性,防止上传不受支持或潜在恶意的文件。

具体而言,`fileTypeExts`属性可以包含一个字符串,其中包含允许上传的文件类型。

这些文件类型通常以逗号分隔。

例如:
```html
<input type="file"name="file"id="fileInput"accept="image/*"
fileTypeExts=".jpg,.jpeg,.png">
```
在上述示例中,`fileTypeExts`属性限制了用户只能上传扩展名为`.jpg`、`.jpeg`和`.png`的图像文件。

需要注意的是,前端的文件类型限制只是一种辅助手段,真正的安全性检查应该在后端进行,因为前端的控制可以被绕过。

后端应该根据文件的实际内容进行验证,确保文件不包含恶意代码或不受支持的格式。

fileupload使用

fileupload使用

fileupload使用
fileupload是一种用于上传文件的工具,可以方便地将本地文件上传到服务器。

以下是使用fileupload的步骤:
1. 引入fileupload的js和css文件。

2. 创建一个form表单,设置enctype属性为
'multipart/form-data',并包含一个input标签用于选择文件。

3. 在js代码中,使用$(selector).fileupload()函数初始化fileupload插件。

可以设置一些选项,如url、formData、dataType 等,用于控制上传的行为。

4. 在服务器端,通过解析上传的请求,将上传的文件保存到服务器。

需要注意的是,为了防止文件大小过大导致上传失败,可以在客户端和服务器端都对上传的文件进行大小限制和类型校验。

fileupload的使用相对简单,但在实际项目中可能会有更多的需求和复杂的场景。

因此,建议在使用前先了解一下具体的插件文档和示例。

- 1 -。

使用组件FileUpload

使用组件FileUpload

FileUpload 是Apache commons下面的一个子项目,用来实现Java环境下面的文件上传功能,与常见的SmartUpload齐名。

[编辑本段]一、使用组件FileUpload可以通过许多种不同的方式使用组件FileUpload,这个主要取决于你的应用程序。

在最简单的情况下,你可以调用单一的方法去解析这个Servlet Request,然后处理选项列表,并应用到你的应用程序。

另一方面,你可能决定自定义FileUpload,实现对选项列表种个别项完全控制。

例如:你可以将内容注入到数据库。

这里,我们将描述组件FileUpload的基本原则,并讲解一些简单的、常用的使用模式。

FileUpload自定制将在其他地方描述。

组件FileUpload依赖于Commons IO组件,因此在继续之前,要确保在你的工程classpath中有描述页中提到的相应版本。

(这里FileUpload版本为:commons- fileupload-1.2.1,Commons IO版本为:commons-io-1.4)[编辑本段]二、组件FileUpload是怎样工作的上传的文件要求包括一个根据RFC 1867(在HTML中基于表单的文件)编码的选项列表清单。

组件FileUpload可以解析这个请求,并给你的应用程序提供一份独立上传的项目清单。

无论每个项目背后如何执行都实现了FileItem接口。

这里将描述组件FileUpload库的普通API,这些API比较简单。

不过,对于最终的实现,你可以参考最新的API流。

每一个文件项目都有一些属性,这些可能在你的应用程序中应用到。

比如:每一个项目有一个名称name和内容类型congtent type,并提供了一个InputStream访问其数据。

另一方面,你处理项目的方法可能有所不同,这个依赖于是否这个项目是一个规则的表单域,即:这个数据是来自普通的表单文本,还是普通的HTML域或是一个上传文件。

fileupload上传代码与txt文件取值实例

fileupload上传代码与txt文件取值实例

Fileupload 上传一般的上传下载相信大家都会得。

最近做了一个txt文件的读取,原本简单的事情,结果想了一个下午,只因逻辑思维错误。

下面就跟大家说一下这个功能的实现以及利用fileupload上传文件的快速开发。

功能:按一定的规则读取一个txt文件里面的内容。

首先我们先到网上下载两个包:commons-fileupload-1.2.2.jarcommons-io-2.1.jar有了这两个包之后我们就可以利用fileupload控件来上传文件到服务器了。

下面代码是上传代码【UploadUtil类】(通用代码,大家可以直接拷贝过去用)import java.io.File;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Date;import java.util.Iterator;import java.util.List;import javax.servlet.http.HttpServletRequest;import mons.fileupload.FileItem;import mons.fileupload.disk.DiskFileItemFactory; import mons.fileupload.servlet.ServletFileUpload;public class UploadUtil{public static final long serialVersionUID =0L;@SuppressWarnings("unchecked")public static List<String> upload(HttpServletRequest request,String targetFolder){List<String> files = new ArrayList<String>();File targetFile = new File(request.getSession().getServletContext().getRealPath(targetF older));//获取向项目路径File temFile = new File(request.getSession().getServletContext().getRealPath("/temp" ));//获取项目路劲临时目录if(!targetFile.exists()){targetFile.mkdirs();}if(!temFile.exists()){temFile.mkdirs();}try{if(ServletFileUpload.isMultipartContent(request)){DiskFileItemFactory factory = new DiskFileItemFactory();factory.setSizeThreshold(3000000);factory.setRepository(temFile);ServletFileUpload upload = new ServletFileUpload(factory);upload.setHeaderEncoding("UTF-8");upload.setSizeMax(3000000);// Parse the requestList<FileItem> items = upload.parseRequest(request);Iterator<FileItem> iter = items.iterator();while (iter.hasNext()) {FileItem item = (FileItem) iter.next();String fileName = item.getName();if(!item.isFormField()){if(fileName!=null&&!fileName.isEmpty()){int dot = stIndexOf(".");fileName = fileName.substring(dot);fileName = item.getFieldName()+"_"+rename()+fileName;File uploadedFile = new File(targetFile,fileName);item.write(uploadedFile);files.add(uploadedFile.getAbsolutePath());}}}}return files;}catch(Exception e){if(files!=null&&!files.isEmpty()){for(String fileName:files){File file = new File(fileName);if(file.exists()){file.delete();}}}e.printStackTrace();return null;}}/*** 获取时间命名文档* @return*/private static String rename(){String name="";SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");Date date = new Date();name=sdf.format(date);name = name+Math.random()*10;return name;}}有了这个类之后我们是否就可以直接能上传文件了呢??还不行,我们还要设置一下jsp页面。

commons-fileupload用户指南

commons-fileupload用户指南

使用fileupload根据你的应用需求,fileupload可以有许多不同的使用方式。

在最简单的情况下,你可以调用一个简单的方法来解析servlet请求,然后在他们提交到你的应用时处理表单列表。

在其它规模的终端上,你也可能决定将fileupload进行自定义,以完全控制个别表单项存储的方法。

比如,你或许会将内容流化来保存到数据中。

在这里。

我们将要描述fileupload的基本使用方法,然后解释一些更简单的,以及最常用的使用模式。

fileupload的个性化在这里得到了描述。

它怎么工作一个文件上传请求由有序表单项的列表组成,这些表单是根据RFC1867来编码的,是在html中基于表单的文件上传。

fileupload能解析这样一个请求然后向你的应用提供一个单独的上传表单项的列表。

每一个这样的表单项实现了FileItem接口,而不需要考虑它潜在的实现方式。

每个文件的表单项拥有一系列可能对你的应用有用的属性,比如,每个项目都有一个名字和文件类型,你就可以提供一个InputStream来取它的数据。

从另一方面说,你可能需要对这些选项进行不同的处理,这个可以根据对这个选项是不是一个规则的表单项来判断,即可以根据这个数据是否来源于普通的文本框或者一个简单的html表单域,还是一个能被上传的文件。

FileItem接口提供了多种方法来判断它是否是一个可上传的文件,然后你就可以用最合适的方式来处理这些数据了。

FileUpload使用FileItemFactory来创建新的文件项目。

这正是给FileUpload带来灵活性的原因。

这个工厂最终控制每个项目的创建。

默认的工厂在内存或者磁盘上保存了项目的数据,这个可以根据项目的大小来定(例如,字节数据)。

当然,这个动作可以通过自定义来满足你应用的需要。

解析请求在你对要上传的选项处理之前,很显然的你得先解析这些请求本身。

很直接的就是要确保这个请求是不是一个要上传的文件,然而FileUpload 使这一点简单化了,你只需提供一个静态的方法来做到这一点。

fileupload sample 题目

fileupload sample 题目

fileupload sample 题目摘要:I.前言- 介绍文件上传的概念- 说明文件上传在互联网中的应用II.文件上传的基本原理- 文件传输的过程简述- 文件类型和大小限制的原因III.文件上传的实现方式- 客户端实现文件上传的方式- 服务器端处理文件上传的方式IV.文件上传的安全问题- 常见的文件上传攻击方式- 预防文件上传攻击的措施V.我国对文件上传的管理政策- 我国相关法律法规的介绍- 对文件上传的监管和处罚措施VI.结论- 总结文件上传的重要性和安全性- 对文件上传的未来发展趋势进行展望正文:I.前言在互联网时代,文件上传已经成为我们日常生活中不可或缺的一部分。

无论是在社交媒体上分享照片、在电商平台上传商品图片,还是在电子邮件中发送附件,都离不开文件上传这一功能。

本文将详细介绍文件上传的基本原理、实现方式以及安全问题,并探讨我国对文件上传的管理政策。

II.文件上传的基本原理文件上传,是指客户端将本地文件传输到服务器的过程。

在这个过程中,用户通过客户端选择需要上传的文件,客户端将文件分割成数据包,然后通过HTTP 请求发送到服务器。

服务器接收到请求后,对数据包进行重组,并将文件保存到服务器的磁盘或其他存储设备上。

文件上传时,通常会涉及到文件类型和大小限制。

文件类型限制是为了防止恶意文件(如病毒、木马等)被上传,从而确保服务器的安全;文件大小限制是为了防止用户恶意上传大量文件,占用服务器资源。

III.文件上传的实现方式文件上传的实现方式主要有两种:表单提交和Ajax 上传。

表单提交是最传统的文件上传方式,用户通过填写表单并选择文件,然后提交给服务器。

服务器端处理表单数据,提取文件数据并进行处理。

这种方法简单易用,兼容性较好,但效率较低。

Ajax 上传则是通过JavaScript 异步发送HTTP 请求,将文件数据传输到服务器。

这种方法可以在不刷新页面的情况下完成文件上传,提高了用户体验。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

FileUpload 用法文章分类:Java编程本文以Commons FileUpload组件为例说明怎样为JSP应用添加文件上传功能.当然也有其它组件能实现此功能,本文只是为了说明Commons FileUpload组件的用法.准备工作:1,下载Commons FileUpload组件包,具体可以在网上找,开源的,免费下载.2,下载Commons IO包,上面的组件必须依赖它才能实现功能.该包也在上面的网页上有提供.注意:如果你是使用Tomcat直接开发应用程序,则把上面下载的两个.ZIP文件解压后,将解压后的commons-io-1.4-sources.jar和commons-fileupload-1.2.1.jar两个.jar文件放到tomcat的webapps\你的webapp\WEB-INF\lib\下,目录不存在的话请自己创建.如果你是直接使用MyEclipse进行开发应用,刚把上面的两个.jar文件放到自己创建的用户库里面,在用到这个库时再导入到应用程序中.步骤:1.创建一个Servlet----Upload.java文件,用于实现上传文件import java.io.*;import java.util.*;import javax.servlet.*;import javax.servlet.http.*;import mons.fileupload.*;public class Upload extends HttpServlet {private String uploadPath = "d:\\upload\\"; // 上传文件的目录private String tempPath = "d:\\upload\\tmp\\"; // 临时文件目录在doPost()方法中,当servlet收到浏览器发出的Post请求后,实现文件上传。

以下是示例代码:public void doPost(HttpServletRequest request,HttpServletResponse response)throws IOException, ServletException{try {DiskFileUpload fu = new DiskFileUpload();// 设置最大文件尺寸,这里是4MBfu.setSizeMax(4194304);// 设置缓冲区大小,这里是4kbfu.setSizeThreshold(4096);// 设置临时目录:fu.setRepositoryPath(tempPath);// 得到所有的文件:List fileItems = fu.parseRequest(request);//解析用户请求的参数,取出文件上传信息Iterator i = fileItems.iterator();// 依次处理每一个文件:while(i.hasNext()) {FileItem fi = (FileItem)i.next();// 获得文件名,这个文件名包括路径:String fileName = fi.getName();// 在这里可以记录用户和文件信息// ...// 写入文件,暂定文件名为a.txt,可以从fileName中提取文件名:fi.write(new File(uploadPath + "a.txt"));}}catch(Exception e) {// 可以跳转出错页面}}编译该servlet,注意要指定classpath,确保包含 commons-upload-1.0.jar 和tomcat\common\lib\servlet-api.jar。

2.配置 servlet,用记事本打开tomcat\webapps\你的webapp\WEB-INF\web.xml,没有的话新建一个。

典型配置如下:<?xml version="1.0" encoding="ISO-8859-1"?><!DOCTYPE web-appPUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "/dtd/web-app_2_3.dtd"><web-app><servlet><servlet-name>Upload</servlet-name><servlet-class>Upload</servlet-class></servlet><servlet-mapping><servlet-name>Upload</servlet-name><url-pattern>/fileupload</url-pattern></servlet-mapping></web-app>3. 配置好servlet后,启动tomcat,写一个简单的html测试:<form action="fileupload" method="post"enctype="multipart/form-data" name="form1"><input type="file" name="file"><input type="submit" name="Submit" value="upload"></form>注意action="fileupload"其中fileupload 是配置servlet时指定的url-pattern2007-06-24fileUpload控件使用方法介绍(有试例源代码哦!)使用FileUpLoad包进行文件上传。

进行文件上传一般有三种方式使用fileUpLoad使用smartFileUpLoad自己编写类似的程序进行解析下面介绍一下第一种方式的使用方法:fileUpLoad是apache的一个开源项目,用来进行解析带有文件的请求处理。

著名的struts的FormFile就是用的它进行解析处理的。

1首先页面上我们需要将表单设置下面类似的参数:< form method="post" enctype="multipart/form-data"action=”………… ” >2 然后我们需要在工程里导入所需要的包,可以在apache网站上下载:/commons/fileupload/3 在我们的servlet中可以获取到request参数,然后可以这样取传递过来的字段参数及文件参数:在这里我写了两个类去生成并存储字段和文件的值:可以跟着红色的注释代码看一下实现的过程/***@author sxy**封装了FileUpload类,实现文件上传功能**/publicclass FileUploadUtil {privatestatic Logger logger = Logger.getLogger(FileUploadUtil.class);public HttpServletRequest request;//这个是FileUpLoad控件的实际处理的request数据的类对象DiskFileUpload fu;//用来存储解析后的字段和文件数据List fileItems;//字段名与字段值的映射 String--VectorHashMap fieldsMap=new HashMap();//字段名与相对UploadedFile的映射HashMap filesMap=new HashMap();/**构造函数,遍历所有字段,分别存入文件MAP和字段MAP*@param request*@param tempDirectory*@throws BaseWebException*///当生成一个类时就开始了对request传递过来的数据的解析public FileUploadUtil(HttpServletRequest request,String tempDirectory) throws Exception {this.request = request;//这一句很重要,以前我没有加上,结果UTF-8编码时老是出现乱码问题,最后还是看了Struts 的文件上传源代码是这样写的,才解决了乱码问题String encoding=request.getCharacterEncoding();fu = new DiskFileUpload();fu.setSizeMax(44194304); //设置文件大小.fu.setSizeThreshold(4096);fu.setHeaderEncoding(encoding);fu.setRepositoryPath(tempDirectory); //设置临时目录.try {//解析参数,在后面进行文件字段和普通字段值的进一步处理fileItems = fu.parseRequest(request); //解析请求,返回一个集合.}catch (FileUploadException e) {thrownew Exception(e);}Iterator i = fileItems.iterator();//遍历解析好的参数,以区分文件还是普通字段,并作相应的处理(存入不同的 hashMap)while(i.hasNext()){FileItem fi = (FileItem)i.next();//判断当前项是否为普通字段if(fi.isFormField()) //这是用来确定是否为文件属性,{Vector vec=new Vector();//需改正String fieldName = fi.getFieldName(); //这里取得字段名称//如果已经存在此字段信息(多选列表或多个同名的隐藏域等)if(fieldsMap.get(fieldName)!=null){vec=(Vector)fieldsMap.get(fieldName);("value: fi.getString(request.getCharacterEncoding()));//很重要!需要进行编码哦!!!vec.add(fi.getString(request.getCharacterEncoding()));}//第一次取到这个名的字段else{("value: "+fi.getString(request.getCharacterEncoding()));vec.add(fi.getString(request.getCharacterEncoding()));fieldsMap.put(fieldName,vec);}}//为文件字段时else{//传来的文件名不为空时String fullName=fi.getName();if(fullName!=null&&!("".equals(fullName))){//这里是一个封装好的类型,封装的不太好,其中的getRealName()不//好用,但是获取扩展名和文件名的方法还是可以的。

相关文档
最新文档