Web的文件上传

1、上传java

一、上传通常都是使用表单,须要添加如下部分
        * method="post"
        * enctype="multipart/form-data"
        * 表单中须要添加文件表单项:<input type="file" name="xxx" />缓存

<form action="xxx" method="post" enctype="multipart/form-data">
  用户名;<input type="text" name="username"/><br/>
  照 片:<input type="file" name="zhaoPian"/><br/>
  <input type="submit" value="上传"/>
</form>

二、上传会让request.getParametere("xxx")方法失效,此时将上传表单项分为普通表单项和文件表单项。服务器

           普通表单项:
            > 1个头:Content-Disposition:包含name="xxxx",即表单项名称。
            > 体就是表单项的值
           文件表单项:
            > 2个头:
              * Content-Disposition:包含name="xxxx",即表单项名称;还有一个filename="xxx",表示上传文件的名称
              * Content-Type:它是上传文件的MIME类型,post

                                          例如:image/pjpeg,表示上传的是图片,图上中jpg扩展名的图片。
              > 体就是上传文件的内容。编码

三、上传步骤code

        准备工做:导入commons-fileupload.jar, commons-io.jar俩个包orm

         1). 建立工厂:DiskFileItemFactory factory = new DiskFileItemFactory();
         2). 建立解析器:ServletFileUpload sfu = new ServletFileUpload(factory);
         3). 使用解析器来解析request,获得FileItem集合:List<FileItem> fileItemList = sfu.parseRequest(request);图片

                                          注意:List的顺序与表单项从上到下的顺序一致。ip

          FileItem经常使用的方法:
                * boolean isFormField():是否为普通表单项!返回true为普通表单项,若是为false即文件表单项!
                * String getFieldName():返回当前表单项的名称;
                * String getString(String charset):传入编码,返回表单项的值;
                * String getName():返回上传的文件名称
                * long getSize():返回上传文件的字节数
                * InputStream getInputStream():返回上传文件对应的输入流
                * String getContentType():获取上传文件类型
                * void write(File destFile):把上传的文件内容保存到指定的文件中。get

//建立将要保存文件的文件流
	        File file=new File("C:/Users/13928/Desktop/图标.jpg");	
		item2.write(file);	//将文件流写入服务器

四、上传文件的大小限制

  •     单个文件大小限制

    > sfu.setFileSizeMax(100*1024):限制单个文件大小为100KB,必须在解析开始以前调用!
    > 若是上传的文件超出限制,在parseRequest()方法执行时,会抛出异常!FileUploadBase.FileSizeLimitExceededException

  •    整个请求全部数据大小限制

    > sfu.setSizeMax(1024 * 1024):限制整个表单大小为1M,必须在解析开始以前调用!
    > 若是上传的文件超出限制,在parseRequest()方法执行时,会抛出异常!FileUploadBase.SizeLimitExceededException

五、缓存大小与临时目录                  * 缓存大小:上传文件超出多大,才向硬盘保存!默认为10KB                  * 临时目录:向硬盘的什么目录保存                   设置缓存大小与临时目录:new DiskFileItemFactory(20*1024, new File("E:/temp"));

相关文章
相关标签/搜索