`
wen2006953
  • 浏览: 1260 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

diskFile上传文件

    博客分类:
  • java
 
阅读更多
/**  
 *   
 * @author 郑阳文
 *    
 *  使用apache的commons-io-2.4.jar,commons-fileupload-1.2.2.jar完成处理文件上传的Servlet  
 */  
public class UploadServlet extends HttpServlet {   
  
    public void doPost(HttpServletRequest request, HttpServletResponse response)   
            throws ServletException, IOException {   
        /**  
         * request.getRealPath("/")返回的是当前项目所在硬盘的路径 如:C:\Program Files\Apache  
         * Software Foundation\Tomcat 6.0\webapps\Struts2_9\  
         * request.getRealPath("/upload")返回的是当前项目所在硬盘的路径+根目录下面的upload的路径  
         * 如:C:\Program Files\Apache Software Foundation\Tomcat  
         * 6.0\webapps\Struts2_9\Upload  
         */  
        String path = request.getRealPath("/upload");   
        DiskFileItemFactory factory = new DiskFileItemFactory();   
        /**  
         * Apache上传组件上传的文件若小于某一值时就将要上面的文件放在内存中,否则就放到一个临时的目录中去。  
         */  
        /**  
         * 设置文件小于多少时放到内存当中去。1024*1024为1M的大小  
         */  
        factory.setSizeThreshold(1024 * 1024);   
        /**  
         * 设置大于上面设置的大小的文件上传时所放的临时目录,上传完成后临时目录所存放的垃圾文件不自动删除。  
         */  
        factory.setRepository(new File(path));   
        /**  
         * ServletFileUpload完成上传的核内类  
         */  
        ServletFileUpload servletUpload = new ServletFileUpload(factory);   
        try {   
            List<FileItem> list = servletUpload.parseRequest(request);   
            for (FileItem item : list) {   
                /**  
                 * 非file字段,即普通的字段  
                 */  
                if (item.isFormField()) {   
                    /**  
                     * 获得字段的名称,即对应页面文本框等的名称  
                     */  
                    String name = item.getFieldName();   
                    /**  
                     * 以gbk方式获得该字段的value值,即对应页面文本框等所输入的值  
                     */  
                    String value = item.getString("gbk");   
  
                    request.setAttribute(name, value);   
                } else {   
                    /**  
                     * file型字段  
                     */  
                    /**  
                     * 获得页面file的名称  
                     */  
                    String name = item.getFieldName();   
                    /**  
                     * 获得页面file中用户选择的文件的路径(与普通的字段不同)  
                     * 由于不同的浏览器所取得值不同,有的得到是所选择文件的路径,有的得到的就是所选择的文件的名称。  
                     * 如:有的浏览器所取得的是:C:\Documents and  
                     * Settings\Administrator\桌面\电话本.txt 有的浏览器所取得的是:电话本.txt  
                     */  
                    String value = item.getName();   
                    /**  
                     * 下面做一个统一的处理 若为文件名则下面没有”\“则start为-1  
                     */  
                    int start = value.lastIndexOf("\\");   
                    String fileName = value.substring(start + 1);   
                    request.setAttribute(name, fileName);   
                    /**  
                     * 下面做上传的处理  
                     */  
                    InputStream is = item.getInputStream();   
                    /**  
                     * 上传的路径依然选择path  
                     */  
                    File UploadFile = new File(path, fileName);   
                    OutputStream os = new FileOutputStream(UploadFile);   
  
                    byte[] buffer = new byte[400];   
                    int length = 0;   
                    while ((length = is.read(buffer)) > 0) {   
                        os.write(buffer, 0, buffer.length);   
                    }   
                    os.close();   
                    is.close();   
                       
                    /**  
                     * 更简单的上传方式  
                     * 无需使用InputStream和OutputStream对象item.write(File)即可  
                     * item.write(UploadFile);  
                     */  
                }   
            }   
        } catch (FileUploadException e) {   
            e.printStackTrace();   
        }   
  
    }   
  
    public void doGet(HttpServletRequest request, HttpServletResponse response)   
            throws ServletException, IOException {   
        this.doPost(request, response);   
    }   
}  

 

分享到:
评论

相关推荐

    上传文件所需jar包

    在Java开发中,上传文件是一项常见的任务,而`jar包`是Java应用程序的打包格式,包含了一组类库和资源文件。"上传文件所需jar包"这个标题暗示我们需要关注的是与文件上传相关的Java库。在描述中提到的"上传文件时所...

    jsp上传文件实例可以使用jsp上传图片,文档,等文件

    本实例主要探讨如何使用JSP来实现文件上传的功能,特别是针对图片、文档等类型的文件。文件上传是一个常用的需求,例如用户在网站上提交个人信息时可能需要上传头像或简历。以下将详细介绍如何使用JSP进行文件上传。...

    使用fileupload组件实现文件上传功能

    使用fileupload组件实现文件上传功能 FileUpload组件是Apache提供的一款文件上传组件,能够帮助我们轻松实现文件上传功能。下面我们将详细介绍使用FileUpload组件实现文件上传功能的步骤和要点: 首先,需要引入两...

    disk_PHP单文件文件管理器(网盘)_

    2. **上传文件**:用户可以通过网页表单选择本地文件并上传到服务器,支持多文件同时上传,或者拖放上传。 3. **下载文件**:用户可以点击文件名直接下载,系统可能会提供下载链接或者通过浏览器的下载管理器进行...

    java上传文件必需包

    在Java开发中,上传文件是一项常见的任务,尤其在构建Web应用程序时。为了实现这个功能,开发者通常需要依赖一些外部库,这些库提供了处理文件上传所需的功能。标题提到的"java上传文件必需包"包含了两个关键的...

    ftp 远程dos命令上传文件

    在压缩包中的"FTP 上传文件"可能是一个批处理脚本(`.bat`文件),包含了上述FTP命令的组合,用于自动执行文件上传。这个脚本可以包含错误检查、日志记录等高级功能,以确保上传过程的可靠性和可追溯性。 总之,...

    java上传文件代码

    在Java编程语言中,上传文件是一项常见的任务,广泛应用于各种应用程序,如Web服务、云存储接口等。这里我们将深入探讨如何使用Java实现文件上传功能,同时结合提供的描述,我们可以假设包含三个示例文本文件(txt...

    apache文件上传_apache文件上传_

    请注意,实际应用中,您可能还需要处理其他方面,如验证文件类型、重命名上传文件以避免冲突、处理异常、提供反馈给用户等。此外,确保服务器有足够的权限来读写指定的上传目录。 总的来说,Apache Commons ...

    基于nestjs与vue3的大文件上传.zip

    在Vue组件中,创建一个`input[type="file"]`用于选择文件,使用`@change`事件监听文件选择,然后在`watch`中监控文件状态,当文件选择后触发上传请求: ```html &lt;input type="file" @change="handleFileChange...

    jsp与servlet 上传文件 javaBean上传文件

    在处理文件上传需求时,JSP通常作为前端界面,而Servlet则负责后端逻辑处理。本篇文章将深入探讨如何使用JSP与Servlet进行文件上传,并特别关注如何解决中文文件名乱码的问题。 首先,我们需要理解文件上传的基本...

    JSP实现 文件上传

    此外,设置表单的enctype属性为"multipart/form-data",这是上传文件所必需的。 ```html &lt;input type="file" name="uploadFile"&gt; 上传"&gt; ``` 三、Servlet处理文件上传 2. 使用Servlet处理请求:在Java中,我们...

    java 实现文件上传

    在Java Web开发中,文件上传是一项常见的功能,用于允许用户从他们的计算机上传文件到服务器。本教程将深入探讨如何在Java中实现文件上传,主要关注使用JSP进行前端验证和Servlet进行后端处理。 首先,我们需要理解...

    一个好用的java文件上传代码,供大家交流学习呵呵

    接着,创建了`DiskFileItemFactory`实例,用于处理上传文件的临时存储,并设置了内存阈值,超过这个大小的文件会存储到磁盘。`ServletFileUpload`对象用于解析HTTP请求中的文件上传数据,同时设置了最大允许的上传...

    JSP+servlet上传文件有 进度条

    在Web开发中,用户经常需要上传文件,例如图片、文档等。为了提供更好的用户体验,引入了文件上传进度条的功能,让用户能实时了解上传进度,增强交互性和反馈效果。本主题将详细探讨如何在JSP(JavaServer Pages)和...

    文件上传所需jar包

    在文件上传过程中,当需要对上传文件进行进一步处理,如重命名、移动或读取内容时,`commons-io.jar`就显得非常实用。 在使用这两个jar包之前,你需要将它们添加到项目的类路径中,这通常可以通过IDE的构建路径配置...

    超级源码vb.net 上传图片文件

    1. **文件大小限制**:默认情况下,ASP.NET对上传文件的大小有限制,默认最大为4MB(即4096KB)。如果需要上传更大的文件,可以通过修改`web.config`中的`httpRuntime`元素的`maxRequestLength`属性来调整此限制。 ...

    java上传文件到服务器

    在Java编程中,上传文件到服务器是一项常见的任务,特别是在Web应用程序和云计算环境中。这个过程涉及到客户端(通常是用户设备上的Java程序)与服务器之间的数据传输,通常通过HTTP或HTTPS协议进行。下面将详细介绍...

    jsp上传图片,文件

    2. **multipart/form-data**:注意,上传文件时表单的`enctype`属性必须设置为`multipart/form-data`,这是因为文件上传涉及到二进制数据,而这种编码方式能正确处理二进制数据。 3. **Servlet**:当用户提交表单后...

    struts文件上传.pdf

    需要注意的是,文件上传涉及到客户端和服务器端的交互,因此还需要考虑安全性问题,比如对上传文件的类型和大小进行限制,以及对上传文件进行病毒扫描等。此外,还可以进一步优化上传过程,比如实现进度条显示等功能...

    file文件和form表单同步上传

    这里,`upload.single('userFile')`会接收一个名为`userFile`的文件字段,将其存储在`uploads/`目录下,并提供有关上传文件的信息。 总结,通过结合Bootstrap的文件输入组件和HTML的`form`表单,我们可以创建一个既...

Global site tag (gtag.js) - Google Analytics