精华内容
下载资源
问答
  • JAVA项目同时上传多个文件和多个内容   首先这俩问题是由个功能引发的,最近项目中有这样的要求,前端要上传多个文件用于地图描绘那些东西,但只是为了拼到地图上查看一下,并不做保存,这就引发了我的纠结,...

    JAVA项目同时上传多个文件和多个内容

      首先这俩问题是由一个功能引发的,最近项目中有这样的要求,前端要上传多个文件用于地图描绘那些东西,但只是为了拼到地图上查看一下,并不做保存,这就引发了我的纠结,既然上传到服务器上,还不要保存,那我们干嘛还要上传到服务器,占用服务器的资源。
      文件上传下载接口java例子下载地址
      上边的例子里关于FileUtils的工具类依赖在下边,即commons-io包依赖
      文件下载预览写法文章,可以点这里
      所以,我认为前端应该有自己的读取本地文件的方法,后来找到一个方法,如下:

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <script type="text/javascript">
        function showPreview(source) {
            var file = source.files[0];
            if(window.FileReader) {
                var fr = new FileReader();
                fr.onloadend = function(e) {
                    document.getElementById("portrait").src = e.target.result; //这个就是图片的流,可以直接展示到页面上
                };
                fr.readAsDataURL(file);
            }
        }
    </script>
    <input type="file" name="file" onchange="showPreview(this)" />
    <img id="portrait" src="" width="70" height="75">
    

    它的样式如下:
    这里写图片描述

    当然这是一个很简单的例子,最主要的是上边的那个e.target.result ,即是图片的流,可以被前端拿到,但是后来发现这个只是针对于图片的方法,不管你上传的啥,都会被它加上data/image 标识,这真坑爹。我又不是前端,也不想找了,后来只能是上传服务器了。

    JAVA项目同时上传多个文件和多个内容

    文件上传的前端代码:
    这个我再另一篇文章里已经写过
    JAVA发送Post请求
    但是这个我当时写的是上传一个文件,但是也是那样写:
    首先前端的页面写法如下:

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>Title</title>
        <script type="text/javascript" src="jquery-3.2.1.min.js"></script>
        <script>
            function doUpload() {
             var formData = new FormData($("#uploadForm")[0]);
             $.ajax({
             url: '/shapeFile/upload',
             type: 'POST',
             data: formData,
             async: false,
             cache: false,
             contentType: false,
             processData: false,
             success: function (returndata) {
             console.log(returndata);
             },
             error: function (returndata) {
             alert(returndata);
             }
             });
             }
        </script>
    </head>
    <body>
        <form id="uploadForm" enctype="multipart/form-data">
            <p >指定文件夹名: <input type="text" name="uploadDir" value= ""/></p >
            <p >上传文件: <input type="file" name="file"/></p>
            <p >上传文件: <input type="file" name="file2"/></p>
            <input type="button" value="上传" onclick="doUpload()" />
        </form>
    </div>
    </body>
    </html>
    

    对应的样式如下:
    这里写图片描述
    上边的代码你可以从这里下载:文件上传例子

    后端的写法如下:
    (1)代码:

    import org.springframework.util.StringUtils;
    import org.springframework.web.bind.annotation.CrossOrigin;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    import org.springframework.web.bind.annotation.RestController;
    import org.springframework.web.multipart.MultipartFile;
    import org.springframework.web.multipart.MultipartHttpServletRequest;
    import javax.servlet.http.HttpServletRequest;
    import java.io.File;
    import java.io.IOException;
    import java.util.Collection;
    import java.util.Map;
    import org.apache.commons.io.FileUtils;
    /**
     * Created by Administrator on 2018/1/26. MultipartFile属于
     * spring-web包里的东西,需要自己下载一个
     */
    @RestController
    @RequestMapping("/shapeFile")
    public class ShapeFileController {
        @RequestMapping(value="/upload",method = RequestMethod.POST)
        @CrossOrigin
        public Object getFile(HttpServletRequest request){
        /**
        下边这个是获取非文件的属性值方法
        **/
        String uploadDir= request.getParameter("uploadDir");
            MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
    //        List<MultipartFile> fileList = multipartRequest.getFiles("file");
            Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
            if(fileMap == null || fileMap.size() == 0){
                return addResultMapMsg(false,"请上传文件,注意文件的name属性为file");
            }
            Collection<MultipartFile> files = fileMap.values();
            for(MultipartFile file:files){
            /**
            注意这里获取的个数,是根据前端form表单里有几个,type=file来决定的,
            比如你虽然只点选了一个文件,上传,但这里实际上回有两个MultipartFile对 象,只不过其中一个MutipartFile的文件名会为空,这就是为什么下边会有个判断文件名
            为空的步骤**/
                String req= file.getOriginalFilename();
                if(StringUtils.isEmpty(req)){
                    continue;
                }
                File tempFile = getTmpFile(req);
                System.out.println(tempFile.getAbsolutePath());
                if(!tempFile.exists()){
                    tempFile.getParentFile().mkdirs();
                    try {
                        tempFile.createNewFile();
                        file.transferTo(tempFile); //到这里tempFile即是上传上来的文件。
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
                System.out.println(req);
            }
            return null;
        }
        /**
         下边这个是好方法
        **/
        public File getTmpFile(String fileName) {
    		File tmpDir = FileUtils.getTempDirectory();
    		System.out.println("========"+tmpDir.getAbsolutePath());
    		String tmpFileName = (Math.random() * 10000 + "").replace(".", "")+"_"+fileName;
    		return new File(tmpDir, tmpFileName);
    	}
    }
    

      对应上边的File tmpDir = FileUtils.getTempDirectory();FileUtils,是以个工具类,来自commons-io包,下边是其依赖,可以先填到项目里。

    <dependency>
    	<groupId>commons-io</groupId>
    	<artifactId>commons-io</artifactId>
    	<version>2.2</version>
    </dependency>
    

      这里需要注意的是:文件上传时,你只选了一个文件上传,但是因为你有两个type=file的标签,后台接收到的MultipartFile也会是两个,但是其中一个的文件名会是空而已,所以需要加一个判断。
    (2)如果需要上传大文件,最好再加上如下的配置,以下是springboot 项目的:

    首先定义一下

    @Configuration
    public class UploadConfig {
    	 @Bean
    	  public MultipartConfigElement multipartConfigElement() {
    	    MultipartConfigFactory factory = new MultipartConfigFactory();
    	    // 设置文件大小限制 ,超出设置页面会抛出异常信息,
    	    // 这样在文件上传的地方就需要进行异常信息的处理了;
    	    factory.setMaxFileSize("1024000KB"); // KB,MB
    	    /// 设置总上传数据总大小
    	    factory.setMaxRequestSize("2048000KB");
    	    // Sets the directory location where files will be stored.
    	    // factory.setLocation("路径地址");
    	    return factory.createMultipartConfig();
    	  }
    }
    

    然后在application.properties 文件中加上下边的代码:

    spring.http.multipart.maxFileSize=500Mb
    spring.http.multipart.maxRequestSize=5000Mb
    

    其实以前我只是加了下边这两行,不知道为什么有一次不加上边那个配置,就报错,文件超出了。后来就都加了。其实,严格来说,只需要加下边的就可以了。

    展开全文
  • Java实现上传(支持多个文件同时上传)和下载

    万次阅读 多人点赞 2018-05-08 17:38:41
    文件上传一直是Web项目中必不可少的项功能。项目结构如下:(这是我之前创建的SSM整合的框架项目,在这上面添加文件上传与下载)主要的是FileUploadController,doupload.jsp,up.jsp,springmvc.xml1.先编写up.jsp&...

    文件上传一直是Web项目中必不可少的一项功能。

    项目结构如下:(这是我之前创建的SSM整合的框架项目,在这上面添加文件上传与下载)


    主要的是FileUploadController,doupload.jsp,up.jsp,springmvc.xml

    1.先编写up.jsp

    <form action="doupload.jsp" enctype="multipart/form-data" method="post">
       		<p>上传者:<input type="text" name="user"></p> 
       		<p>选择文件:<input type="file" name="nfile"></p> 
       		<p>选择文件:<input type="file" name="nfile1"></p> 
       		<p><input type="submit" value="提交"></p>
       </form>

    以上便是up.jsp的核心代码;

    2.编写doupload.jsp

    <%
    	request.setCharacterEncoding("utf-8");
    	String uploadFileName = ""; //上传的文件名
    	String fieldName = "";  //表单字段元素的name属性值
    	//请求信息中的内容是否是multipart类型
    	boolean isMultipart = ServletFileUpload.isMultipartContent(request);
    	//上传文件的存储路径(服务器文件系统上的绝对文件路径)
    	String uploadFilePath = request.getSession().getServletContext().getRealPath("upload/" );
    	if (isMultipart) {
    		FileItemFactory factory = new DiskFileItemFactory();
    		ServletFileUpload upload = new ServletFileUpload(factory);
    		try {
    			//解析form表单中所有文件
    			List<FileItem> items = upload.parseRequest(request);
    			Iterator<FileItem> iter = items.iterator();
    			while (iter.hasNext()) {   //依次处理每个文件
    				FileItem item = (FileItem) iter.next();
    				if (item.isFormField()){  //普通表单字段
    					fieldName = item.getFieldName();   //表单字段的name属性值
    					if (fieldName.equals("user")){
    						//输出表单字段的值
    						out.print(item.getString("UTF-8")+"上传了文件。<br/>");
    					}
    				}else{  //文件表单字段
    					String fileName = item.getName();
    					if (fileName != null && !fileName.equals("")) {
    						File fullFile = new File(item.getName());
    						File saveFile = new File(uploadFilePath, fullFile.getName());
    						item.write(saveFile);
    						uploadFileName = fullFile.getName();
    						out.print("上传成功后的文件名是:"+uploadFileName);	
    						out.print("\t\t下载链接:"+"<a href='download.action?name="+uploadFileName+"'>"+uploadFileName+"</a>");
    						out.print("<br/>");	
    					}
    				}
    			}
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    	}
    %>

    该页面主要是内容是,通过解析request,并设置上传路径,创建一个迭代器,先进行判空,再通过循环来实现多个文件的上传,再输出文件信息的同时打印文件下载路径。

    效果图:



    3.编写FilterController实现文件下载的功能(相对上传比较简单):

    @Controller
    public class FileUploadController {
    	@RequestMapping(value="/download")
    	public ResponseEntity<byte[]> download(HttpServletRequest request,HttpServletResponse response,@RequestParam("name") String filename)throws Exception {    
    		//下载显示的文件名,解决中文名称乱码问题  
    		filename=new String(filename.getBytes("iso-8859-1"),"UTF-8");
    		//下载文件路径
    		String path = request.getServletContext().getRealPath("/upload/");
    		File file = new File(path + File.separator + filename);
    		HttpHeaders headers = new HttpHeaders();  
    		//下载显示的文件名,解决中文名称乱码问题  
    		String downloadFielName = new String(filename.getBytes("iso-8859-1"),"UTF-8");
    		//通知浏览器以attachment(下载方式)打开图片
    		headers.setContentDispositionFormData("Content-Disposition", downloadFielName); 
    		//application/octet-stream : 二进制流数据(最常见的文件下载)。
    		headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
    		return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file),    
    				headers, HttpStatus.CREATED);  
    	}
    }

    4.实现上传文件的功能还需要在springmvc中配置bean:

    <bean id="multipartResolver"  
            class="org.springframework.web.multipart.commons.CommonsMultipartResolver">  
            <!-- 上传文件大小上限,单位为字节(10MB) -->
            <property name="maxUploadSize">  
                <value>10485760</value>  
            </property>  
            <!-- 请求的编码格式,必须和jSP的pageEncoding属性一致,以便正确读取表单的内容,默认为ISO-8859-1 -->
            <property name="defaultEncoding">
                <value>UTF-8</value>
            </property>
        </bean>

    完整代码如下:

    up.jsp

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <title>File控件</title>
      </head>
      
      <body>
       <form action="doupload.jsp" enctype="multipart/form-data" method="post">
       		<p>上传者:<input type="text" name="user"></p> 
       		<p>选择文件:<input type="file" name="nfile"></p> 
       		<p>选择文件:<input type="file" name="nfile1"></p> 
       		<p><input type="submit" value="提交"></p>
       </form>
      </body>
    </html>

    doupload.jsp

    <%@ page language="java" pageEncoding="UTF-8"%>
    <%@page import="java.io.*,java.util.*"%>
    <%@page import="org.apache.commons.fileupload.*"%>
    <%@page import="org.apache.commons.fileupload.disk.DiskFileItemFactory" %>
    <%@page import="org.apache.commons.fileupload.servlet.ServletFileUpload"%>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <title>上传处理页面</title>
    </head>
    <body>
    <%
    	request.setCharacterEncoding("utf-8");
    	String uploadFileName = ""; //上传的文件名
    	String fieldName = "";  //表单字段元素的name属性值
    	//请求信息中的内容是否是multipart类型
    	boolean isMultipart = ServletFileUpload.isMultipartContent(request);
    	//上传文件的存储路径(服务器文件系统上的绝对文件路径)
    	String uploadFilePath = request.getSession().getServletContext().getRealPath("upload/" );
    	if (isMultipart) {
    		FileItemFactory factory = new DiskFileItemFactory();
    		ServletFileUpload upload = new ServletFileUpload(factory);
    		try {
    			//解析form表单中所有文件
    			List<FileItem> items = upload.parseRequest(request);
    			Iterator<FileItem> iter = items.iterator();
    			while (iter.hasNext()) {   //依次处理每个文件
    				FileItem item = (FileItem) iter.next();
    				if (item.isFormField()){  //普通表单字段
    					fieldName = item.getFieldName();   //表单字段的name属性值
    					if (fieldName.equals("user")){
    						//输出表单字段的值
    						out.print(item.getString("UTF-8")+"上传了文件。<br/>");
    					}
    				}else{  //文件表单字段
    					String fileName = item.getName();
    					if (fileName != null && !fileName.equals("")) {
    						File fullFile = new File(item.getName());
    						File saveFile = new File(uploadFilePath, fullFile.getName());
    						item.write(saveFile);
    						uploadFileName = fullFile.getName();
    						out.print("上传成功后的文件名是:"+uploadFileName);	
    						out.print("\t\t下载链接:"+"<a href='download.action?name="+uploadFileName+"'>"+uploadFileName+"</a>");
    						out.print("<br/>");	
    					}
    				}
    			}
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    	}
    %>
    </body>
    </html>

    FileUploadController.java

    package ssm.me.controller;
    
    import java.io.File;
    import java.net.URLDecoder;
    import java.util.Iterator;
    import java.util.List;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import org.apache.commons.fileupload.FileItem;
    import org.apache.commons.fileupload.FileItemFactory;
    import org.apache.commons.fileupload.disk.DiskFileItemFactory;
    import org.apache.commons.fileupload.servlet.ServletFileUpload;
    import org.apache.commons.io.FileUtils;
    import org.junit.runners.Parameterized.Parameter;
    import org.springframework.http.HttpHeaders;
    import org.springframework.http.HttpStatus;
    import org.springframework.http.MediaType;
    import org.springframework.http.ResponseEntity;
    import org.springframework.stereotype.Controller;
    import org.springframework.ui.Model;
    import org.springframework.web.bind.annotation.ModelAttribute;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    import org.springframework.web.bind.annotation.RequestParam;
    import org.springframework.web.multipart.MultipartFile;
    
    
    @Controller
    public class FileUploadController {
    	@RequestMapping(value="/download")
    	public ResponseEntity<byte[]> download(HttpServletRequest request,HttpServletResponse response,@RequestParam("name") String filename)throws Exception {    
    		//下载显示的文件名,解决中文名称乱码问题  
    		filename=new String(filename.getBytes("iso-8859-1"),"UTF-8");
    		//下载文件路径
    		String path = request.getServletContext().getRealPath("/upload/");
    		File file = new File(path + File.separator + filename);
    		HttpHeaders headers = new HttpHeaders();  
    		//下载显示的文件名,解决中文名称乱码问题  
    		String downloadFielName = new String(filename.getBytes("iso-8859-1"),"UTF-8");
    		//通知浏览器以attachment(下载方式)打开图片
    		headers.setContentDispositionFormData("Content-Disposition", downloadFielName); 
    		//application/octet-stream : 二进制流数据(最常见的文件下载)。
    		headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
    		return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file),    
    				headers, HttpStatus.CREATED);  
    	}
    }

    SpringMVC.xml(仅供参考,有的地方不可以照搬)

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
           xmlns:mvc="http://www.springframework.org/schema/mvc"
           xmlns:context="http://www.springframework.org/schema/context"
           xmlns:aop="http://www.springframework.org/schema/aop" 
           xmlns:tx="http://www.springframework.org/schema/tx"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
            http://www.springframework.org/schema/mvc 
            http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd 
            http://www.springframework.org/schema/context
            http://www.springframework.org/schema/context/spring-context.xsd
            http://www.springframework.org/schema/aop
            http://www.springframework.org/schema/aop/spring-aop-4.2.xsd
            http://www.springframework.org/schema/tx
            http://www.springframework.org/schema/tx/spring-tx.xsd">
            <!-- 一个用于自动配置注解的注解配置 -->
            <mvc:annotation-driven></mvc:annotation-driven>
         	<!-- 扫描该包下面所有的Controller -->
         	<context:component-scan base-package="ssm.me.controller"></context:component-scan>
            <!-- 视图解析器 -->
            <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"></bean>
    		<bean id="multipartResolver"  
            class="org.springframework.web.multipart.commons.CommonsMultipartResolver">  
            <!-- 上传文件大小上限,单位为字节(10MB) -->
            <property name="maxUploadSize">  
                <value>10485760</value>  
            </property>  
            <!-- 请求的编码格式,必须和jSP的pageEncoding属性一致,以便正确读取表单的内容,默认为ISO-8859-1 -->
            <property name="defaultEncoding">
                <value>UTF-8</value>
            </property>
        </bean>
    
    </beans>        

    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_3_0.xsd" id="WebApp_ID" version="3.0">
      <display-name>Student</display-name>
      <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
        <welcome-file>default.html</welcome-file>
        <welcome-file>default.htm</welcome-file>
        <welcome-file>default.jsp</welcome-file>
      </welcome-file-list>
     <servlet>
      	<servlet-name>springmvc</servlet-name>
      	<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
      <!-- 初始化参数 -->
      <init-param>
      	<param-name>contextConfigLocation</param-name>
      	<param-value>classpath:springmvc.xml</param-value>
      </init-param>
        <load-on-startup>1</load-on-startup>
      </servlet>
      <servlet-mapping>
     	<servlet-name>springmvc</servlet-name>
     	<url-pattern>*.action</url-pattern>
     </servlet-mapping>
      <context-param>
     		<param-name>contextConfigLocation</param-name>
    		<param-value>classpath:spring/applicationContext-*.xml</param-value>
     </context-param>
      <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
      </listener>
    </web-app>

    以上变为文件上传和下载的全部代码,博主亲测过,没有问题。

    展开全文
  • 多文件上传以及java后台接受

    千次阅读 2021-02-05 08:13:54
    最近项目用到的,实现多文件以及一些...上传文件首先解释下action中的地址为我后台接受文件的地址,因为上传文件,所以enctype="multipart/form-data"是必须的同时选择多个文件上传,不使用各种控件的话,把multiple...

    最近项目用到的,实现多文件以及一些信息上传,

    以及后台接收及读取用到了spring及springmvc相关框架。

    不多说废话,直接上例子(这有关键代码)

    首先,前台页面

    id="files" />

    上传文件

    首先解释下action中的地址为我后台接受文件的地址,

    因为上传文件,所以enctype="multipart/form-data"是必须的

    同时选择多个文件上传,不使用各种控件的话,把multiple设置为"true"即可。

    另外,上传文件input中的name属性很重要,后台获取文件会用到的。

    下面上后台代码,username和directory可以在参数中直接获取@RequestMapping(value = "/uploadFiles", method = RequestMethod.POST, consumes = "multipart/*")

    publicvoid uploadFilesFromHtml(

    @RequestParam(defaultValue = "") String username,

    @RequestParam(defaultValue = "") String directory,

    MultipartHttpServletRequest request)

    throws FileUploadException,IOException {

    MultiValueMap map = request.getMultiFileMap();// 为了获取文件,这个类是必须的

    List list = map.get("uploadify");// 获取到文件的列表

    Stringpath= getFilePath(username,directory); //忽略掉,为文件最终上传的地址

    ListfilenameList= newArrayList<>();//

    // 将图片进行存储

    for (MultipartFile mFile : list) {

    StringoriginalFileName= mFile.getOriginalFilename();//获取文件名称

    filenameList.add(originalFileName);

    byte[] bytes = mFile.getBytes();//获取字节数组

    StringfilePath= path+ File.separator+ originalFileName;

    FileOutputStreamfos= newFileOutputStream(newFile(filePath)); //写出到文件

    fos.write(bytes);

    fos.flush();

    fos.close();

    }

    }

    展开全文
  • 本项目为我现在负责开发的一个项目,在线程并发测试中可以支持200,可能由于我电脑的配置问题,一般在并发大于200时client端可能会出现"阻塞"问题,还请大家指教
  • package ... import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.util.HashMap; import java.util.List; import jav...
    package com.acconsys.servlet;
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    import java.util.Properties;
    
    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;
    
    import com.acconsys.chs.CHS4LCA.CallLCAFileUpload;
    import com.acconsys.chs.CHSService.impl.DoReveiveVCIListMethod;
    import com.acconsys.chs.CHSService.util.SFTPUtil;
    
    public class FileUploadServlet extends HttpServlet {
    	private static final long serialVersionUID = 1L;
    
    	public FileUploadServlet() {
    		super();
    	}
    
    	protected void doGet(HttpServletRequest request,
    			HttpServletResponse response) throws ServletException, IOException {
    		Properties p = new Properties();
    		try {
    			p.load(DoReveiveVCIListMethod.class.getClassLoader()
    					.getResourceAsStream("cisConfig.properties"));
    		} catch (IOException e1) {
    			e1.printStackTrace();
    		}
    		Map<String, String> parmaeters = new HashMap<String, String>();
    		// 创建磁盘工厂 缓冲区和磁盘目录
    		DiskFileItemFactory factory = new DiskFileItemFactory();
    		// 设置文件上传的大小限制
    		ServletFileUpload upload = new ServletFileUpload(factory);
    		upload.setFileSizeMax(1024 * 1024 * 800);// 最大上传800M
    		upload.setHeaderEncoding("UTF-8");// 设置编码格式
    
    		// 注册获取前台的值
    		@SuppressWarnings("unchecked")
    		List<FileItem> files = null;
    		try {
    			files = upload.parseRequest(request);
    		} catch (FileUploadException e) {
    			e.printStackTrace();
    		}
    		for (FileItem fileItem : files) {
    			// 判断当前的数据时文件还是普通的表单
    			// 是文件
    			if (fileItem.isFormField()) {
    				String name = fileItem.getFieldName();// 获取属性的名字
    				String value = fileItem.getString("utf-8");// 获取属性的值
    				parmaeters.put(name, value);
    			} else {
    				// 是表单
    				// 获取文件上传的文件名
    				String name = fileItem.getFieldName();
    				// 定义一个新的文件来接收
    				String prefixpath = request.getSession().getServletContext()
    						.getRealPath("/");
    				File tplDir = new File(prefixpath + "WEB-INF\\temp");
    				if (!tplDir.exists()) {
    					tplDir.mkdirs();
    				}
    				File file = new File(prefixpath + "WEB-INF\\temp"
    						+ File.separator + name);
    				file.createNewFile();
    				try {
    					fileItem.write(file);
    				} catch (Exception e) {
    					e.printStackTrace();
    				}
    				fileItem.delete();
    
    				// 将文件上传至sftp
    				SFTPUtil sftp = new SFTPUtil(p.getProperty("sftp.username"),
    						p.getProperty("sftp.password"),
    						p.getProperty("sftp.ip"), Integer.valueOf(p
    								.getProperty("sftp.port")));
    				sftp.login();
    				try {
    					InputStream is = new FileInputStream(file);
    					sftp.upload(p.getProperty("sftp.basePath"),
    							p.getProperty("sftp.directory"), name, is);
    
    				} catch (Exception e) {
    					System.out.println("上传至SFTP服务器失败!");
    				}
    
    				// 调用LCA接口
    				CallLCAFileUpload service = new CallLCAFileUpload();
    
    				String param = name.replace(".zip", ".xml") + " " + name + " "
    						+ p.getProperty("sftp.basePath")
    						+ p.getProperty("sftp.directory")+"/";
    				String batchCommand;
    				if(parmaeters.get("order")==null){//调用的是同步设计成熟度接口
    					batchCommand = "CHSStatusSYN";
    				}else{
    					batchCommand = "CHSFileUpload";
    				}
    				
    				// 返回结果
    				String result = service.callLCAFileUpload(param, batchCommand);
    				System.out.println(result);
    				// lca响应结果返回给CHS客户端
    				response.getOutputStream().println(result);
    				// 根据batchCommand参数判断用户点击的按钮类型
    				if (parmaeters.get("order").equals("check")) {//用户点击的是提交待审签按钮
    					//根据LCA返回结果,确定是否锁定设计
    					//1.从sftp下载结果文件(下载失败,返回错误结果)
    					//2.解析结果文件
    					//3.从sftp将结果文件删除
    					
    					
    				}
    			}
    
    		}
    	}
    
    	protected void doPost(HttpServletRequest request,
    			HttpServletResponse response) throws ServletException, IOException {
    		doGet(request, response);
    	}
    
    }
    

     

    展开全文
  • package ... import java.io.DataOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.net.HttpURLC...
  • Java利用FormData实现多文件上传

    千次阅读 2019-03-26 15:34:22
    话不说,直接上代码: 1、HTML代码: // 声明file类型为multiple(可多选) <input id="uploadfiles" type="file" name="file" multiple/> 2、js代码: // 获取文件,用FormData对象封装: var fd = ...
  • Java多种文件上传方式总结

    千次阅读 2020-08-18 14:09:19
    文件上传 //上传单个文件 @ResponseBody @RequestMapping(value = "uploadfile", produces = "multipart/form-data;charset=UTF-8") public String uploadfiles(HttpServletRequest request){ ...
  • SpringMVC文件上传多文件上传实例

    千次下载 热门讨论 2014-03-01 20:28:21
    在上篇SpringMVC基础教程的源码基础上增加了文件上传多文件上传
  • Spring文件上传,包括一次选中多个文件

    万次阅读 多人点赞 2017-05-27 09:14:45
    Spring文件上传代码示例, 包括一次选中多个文件, 前端与后端代码处理
  • Java接口实现文件上传

    千次阅读 2021-02-12 15:25:38
    因工作需要,在后台管理页面加入一个上传文件的模块,虽然接口的代码很简单,但实现期间遇到了一些比较有趣的坑,特记录下来。需求实现文件上传,并提供一个可供下载的路径。想法文件上传代码暂且不谈,先说说文件...
  • java MultipartFile 一次上传多张图片

    千次阅读 2018-05-18 15:02:04
    public void updateActivities(HttpServletRequest req, HttpServletResponse resp) throws Exception { MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) req;...
  • java实现多文件上传并保存到数据库

    万次阅读 2018-07-25 15:57:43
    好久没有写博客了,今天项目里需要一个功能,即前台实现图片上传列表,并后台保存到mysql中。前台后台一起弄,用了半天时间终于搞定了。 实现:前台Layui实现;后台servlet+hibernate 不废话,先上图 ...
  • java 实现html5多文件选择上传_h5多文件上传_ajax异步多文件上传_java处理多文件上传 html页面如下 muti file upload method="POST" enctype="multipart/form-
  • 就是文件上传是一个一个文件的进入内存上传释放内存,还是一次性全部进内存。。 对js不熟,没学过jQuery网上很多上传大文件的都看不懂。今天试着上传2个文件,一个20M,一个30M的。内存就到90%了...
  •  今天吧坑补上吧,这篇啥也没写 骗了60访问量,良心过不去了。 转换文本格式 功能: 客户端向服务器端发送字符,服务器端转化为大写返回 服务器端代码 public class TcpServer { public static void main...
  • java文件上传文件时间长,报错

    万次阅读 2017-12-11 17:33:50
    然后在百度和谷歌上各种搜索,大多数认为是超时而断开连接。...(1)首先,上传页面上面的 form 标签要设enctype=”multipart/form-data” 参数 (2)修改tomcat配置文件server.xml,找到类似于下面配置: maxThr
  • java文件实现文件上传和下载

    万次阅读 多人点赞 2019-06-10 10:46:20
     文件上传和下载是java web中常见的操作,文件上传主要是将文件通过IO流传放到服务器的某一个特定的文件夹下,而文件下载则是与文件上传相反,将文件从服务器的特定的文件夹下的文件通过IO流下载到本地。...
  • java+服务器上传和下载文件

    千次阅读 2019-08-22 16:13:57
    一个文件变成字节数组, 使用 response.getOutputStream() 来响应给浏览器。 代码如下,此代码已经实现了断点续传功能,用户在下载过程可以暂停,和继续下载,对服务器造成的压力也比较小。   ...
  • 首先,添加好项目运行所需要的jar包,这里...实现一次性选中多个文件进行上传要在文件的表单中加上multiple=”multiple”<form id="myForm" enctype="multipart/form-data" method="post" action="upload/testUpload">
  • java上传文件大小限制

    千次阅读 2021-03-08 22:06:26
    win系统下解决ASP上传文件大小限制200K_电脑基础知识_IT/计算机_专业资料。...介绍 上传 // 新建一个 SmartUpload 对象 SmartUpload su = new SmartUpload(); // 上传初始化 su.initialize(pageCo...
  • 文件上传是每个java开发者必须掌握的。文件上传有很种实现方式,但其实也大同小异。笔人在这里为大家介绍种我习惯用的,上传文件的方式。大家先看代码,最后我会分享我的源码给大家。 1、首先要准备一下需要用到...
  • java异步上传文件(方式)

    千次阅读 2017-12-14 14:14:30
    可以使用jquery-form插件来实现异步上传文件,请自行下载jquery-form.js<script type="text/javascript" src="js/jquery1.11.3.min.js"></script> <script type="text/javascript" src="js/jquery-form.js"></script>...
  • java上传超大文件解决方案

    千次阅读 2019-11-14 11:24:54
    JAVA实现大文件上传及显示进度信息 ---解析HTTPMultiPart协议 (本文提供全部源码下载,请访问https://github.com/1269085759/up6-jsp-mysql) .大文件上传基础描述:  各种WEB框架中,对于浏览器上传文件...
  • Eclipse下搭建基本的基于注解的springmvc项目,除了spring的包以外多加2个包: ...可接受多个值的文件上传字段: <input type="file" name="img" multiple="multiple" /> <%@ page lang...
  • java上传文件慢处理方案

    千次阅读 2019-06-05 17:28:55
    我们平时经常做的是上传文件上传文件夹与上传文件类似,但也有一些不同之处,这次做了上传文件夹就记录下以备后用。 首先我们需要了解的是上传文件三要素: 1.表单提交方式:post(get方式提交有大小限制,post...
  • 多个文件同时上传
  • plupload控件实现图片上传,前台jsp页面控件配置和初始化。
  • // 根据用户名,主机ip,端口获取一个Session对象 session = jsch.getSession(userName, host, port); // 设置密码 session.setPassword(password); Properties configTemp = new Properties(); ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 262,686
精华内容 105,074
关键字:

java一次上传多个文件

java 订阅