文件的上传:二进制文件的上传;

***二进制文件上传的方法:<form action="uploadServlet" method="post" enctype="multipart/form-data">

***在lib目录下:导入文件上传的开源架包:commons-fileupload-1.2.1.jar,commons-io-2.0.jar;

建立Servlet类:UploadServlet,实现文件上传的方法;

package com.lanqiao.javaweb;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

public class UploadServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        // 1. 得到 FileItem 的集合 items
        // Create a factory for disk-based file items
        DiskFileItemFactory factory = new DiskFileItemFactory();

//        FileCleaningTracker fileCleaningTracker =
//        FileCleanerCleanup.getFileCleaningTracker(getServletContext());
//        factory.setFileCleaningTracker(fileCleaningTracker);

        // Set factory constraints,设置文件的大小
        factory.setSizeThreshold(1024 * 500);

        //超过该大小,就读到临时的文件里面
        File tempDirectory = new File("f:\\tempDirectory");
        factory.setRepository(tempDirectory);

        // Create a new file upload handler;上传该文件
        ServletFileUpload upload = new ServletFileUpload(factory);

        // Set overall request size constraint;设置文件总的大小
        upload.setSizeMax(1024 * 1024 * 5);

        // Parse the request
        try {
            //获取jsp文件里的请求,在集合中
            List<FileItem> /* FileItem */items = upload.parseRequest(request);

            // 2. 遍历 items:
            for (FileItem item : items) {
                // 若是一个一般的表单域, 打印信息
                if (item.isFormField()) {
                    String name = item.getFieldName();
                    String value = item.getString();

                    System.out.println(name + ": " + value);

                }
                // 若是文件域则把文件保存到 d:\\files 目录下.
                else {
                    //文件名为file
                    String fieldName = item.getFieldName();

                    //上传的原始的文件名
                    String fileName = item.getName();

                    //上传的文件的类型
                    String contentType = item.getContentType();

                    //上传的文件的大小
                    long sizeInBytes = item.getSize();
                    System.out.println(fieldName);
                    System.out.println(fileName);
                    System.out.println(contentType);
                    System.out.println(sizeInBytes);

                    InputStream in = item.getInputStream();
                    byte[] buffer = new byte[1024];
                    int len = 0;

                    //文件上传后的 路径和文件名
                    fileName = "f:\\files\\" + fileName;
                    System.out.println(fileName);

                    OutputStream out = new FileOutputStream(fileName);

                    while ((len = in.read(buffer)) != -1) {
                        out.write(buffer, 0, len);
                    }

                    out.close();
                    in.close();
                }
            }

        } catch (FileUploadException e) {
            e.printStackTrace();
        }

    }

}

web.xml文件配置和映射:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>day-14-fileupload</display-name>
  <servlet>
    <description></description>
    <display-name>UploadServlet</display-name>
    <servlet-name>UploadServlet</servlet-name>
    <servlet-class>com.lanqiao.javaweb.UploadServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>UploadServlet</servlet-name>
    <url-pattern>/uploadServlet</url-pattern>
  </servlet-mapping>
</web-app>

upload.jsp表单:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>

    <form action="uploadServlet" method="post" enctype="multipart/form-data">

        &nbsp;&nbsp;File:&nbsp;&nbsp;<input type="file" name="file"/>
        <br><br>
        Desc:&nbsp;&nbsp;<input type="text" name="desc"/>
        <br><br>
        <input type="submit" value="Submit"/>
    </form>

</body>
</html>
时间: 2025-01-15 23:41:04

文件的上传:二进制文件的上传;的相关文章

[转]文件上传原理:Web上传文件的原理及实现

现在有很多Web程序都有上传功能,实现上传功能的组件或框架也很多,如基于java的CommonsFileUpload.还有Struts1.x和Struts2中带的上传文件功能(实际上,Struts2在底层也使用了CommonsFileUpload).在asp.net中也有相应的上传文件的控件. 虽然现在有很多上传组件可以利用,但是了解Web上传文件的原理,对于处理突然出现的问题会有很大的帮助,下面就来讲一下通过浏览器上传文件的基本原理.在了解了原理之后,就可以非常容易地自制满足自身需要的上传组件

一个项目中哪些文件是要上传到 git上的,哪些是不必要的

经过测试发现除了上面图中的代码,其他的都是要上传到git上的 , .project文件是一个很关键的文件

Uploadify上传,可以上传多个文件,带有进度条,希望有所帮助!

原文:Uploadify上传,可以上传多个文件,带有进度条,希望有所帮助! 源代码下载:http://www.zuidaima.com/share/1550463502568448.htm 上传前 上传后 

linux上很方便的上传下载文件工具rz和sz使用介绍

简单说就是,可以很方便地用这两个sz/rz工具,实现Linux下和Windows之间的文件传输(发送和接收),速度大概为10KB/s,适合中小文件.rz/sz 通过Zmodem协议传输数据 一般来说,linux服务器大多是通过ssh客户端来进行远程的登陆和管理的,使用ssh登陆linux主机以后,如何能够快速的和本地机器进行文件的交互呢,也就是上传和下载文件到服务器和本地: 与ssh有关的两个命令可以提供很方便的操作: sz:将选定的文件发送(send)到本地机器 rz:运行该命令会弹出一个文件

asp 文件上传(ASPUpload组件上传)

要实现该功能,就要利用一些特制的文件上传组件.文件上传组件网页非常多,这里介绍国际上非常有名的ASPUpload组件 1 下载和安装ASPUpload  要实现该功能,就要利用一些特制的文件上传组件.文件上传组件网页非常多,这里介绍国际上非常有名的ASPUpload组件,它的下载网址是:           http://www.persits.com/aspupload.exe       组件提供者网址是:           http://www.aspupload.com        

mvc文件上传支持批量上传,拖拽以及预览,文件内容校验等

使用bootstrap-fileinput 使用方式: 1.nuget:Install-Package bootstrap-fileinput 2.语言本地化{下载fileinput_locale_zh.js}或者修改Fileinput中的本地化词汇 3.文件大小限制:修改fileinput.js中的3195行 maxFilePreviewSize配置节点 示例:前台 @{ Layout = null; } <!DOCTYPE html> <html> <head> &

文件上传利器JQuery上传插件Uploadify

在做日常项目中,经常在后台需要上传图片等资源文件,之前使用过几次这个组件,感觉非常好用 ,但是每次使用的时候都是需要经过一番查阅,所以还不如记住在这里,以后使用的时候就翻翻. 他的官方网站如下:http://www.uploadify.com/ 插件下载地址:http://www.uploadify.com/download 说明文档:http://www.uploadify.com/documentation 在此之前,先说明下插件使用流程,该插件是基于jQuery的,所以我们在使用之前需要引

文件上传之普通上传

前言 记得去年十月份离开基础邮箱项目组,进入云邮局项目组之后,领导曾经嘱咐我将邮箱的上传模块整理成文档,方便其他同事接手.由于各方面原因迟迟未动手,最近终于下定决心,整理自己的笔记,记录邮箱用到的所有上传方式.大概包括:普通上传.139邮箱小工具上传.Flash上传.HTML5上传(含拖拽上传,分块上传,断点续传,妙传等功能) 普通上传流程如下: 一.应用场景: 单个小文件无需显示上传进度可采用普通上传 二.实现效果: 无刷新上传文件 三.操作步骤: 步骤一.美化原生的input type='f

在asp.net中用客户端上传控件上传文件( 需要注意的)

在asp.net中使用<inpu nme=“file” type=“file”>客户端控件上传文件, 代码大致如下: for(int i=0; i< Request.Files.Count; i++) //这里就是获取不到file的个数 { if(Request.Files[i].ContentLength > 0) { Response.Write (Request.Files [i].FileName ); } } 在我的页面中,Request.Files.Count怎么弄都是

文件上传时,上传到webapps目录下的文件会自动删除

1:文件上传时,上传到webapps目录下的文件会自动删除的原因? tomcat目录下的webapps 文件夹是部署目录,当重新部署服务,上传的文件不在部署文件的范畴内,即此时开发工具中没有上传的文件,所以上传的文件就没有了. 2:解决方法 把文件上传路径设置到webapps目录之外,可以在Tomcat目录下建立一个文件夹,如:upload 3:简单实现 html文件: <!DOCTYPE html> <html> <head> <meta charset=&qu