//1、首先在tomcat的新端口上重新开启一个tomcat服务器fileuploadserver服务器,并且在webapps下新建一个uploads文件夹

//2、在业务服务器上书写前端页面和后端的方法

// 注意:需要确定tomcat是否有写入权限如果没有需要修改tomcat的web.xml配置文件,赋予可写权限

  1. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
    <title>Title</title>
    </head>
    <body>
    <h3>文件上传</h3>
    <%--<a href="user/fileUpload1">文件上传1</a>--%>
    <form action="/user/fileUpload1" method="post" enctype="multipart/form-data" >
    选择文件:<input type="file" name="upload"/><br/>
    <input type="submit" value="上传">
    </form>

    <form action="user/fileUpload2" method="post" enctype="multipart/form-data" >
    选择文件:<input type="file" name="upload"/><br/>
    <input type="submit" value="上传">
    </form>

    <h3>跨服务器文件上传</h3>

    <form action="user/fileupload3" method="post" enctype="multipart/form-data">
    选择文件:<input type="file" name="upload" /><br/>
    <input type="submit" value="上传" />
    </form>

    </body>
    </html>

  1. package com.hope.controller;

    import com.sun.jersey.api.client.Client;
    import com.sun.jersey.api.client.WebResource;
    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 org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.multipart.MultipartFile;
    import org.springframework.web.multipart.MultipartResolver;

    import javax.servlet.http.HttpServletRequest;
    import java.io.File;
    import java.util.List;
    import java.util.UUID;

    /**
    * @author newcityman
    * @date 2019/11/28 - 13:04
    */
    @Controller("userController")
    @RequestMapping(path = "/user")
    public class UserController {
    /**
    * 传统方式上传
    *
    * @param request
    * @return
    * @throws Exception
    */
    @RequestMapping(path = "/fileUpload1")
    public String fileUpload1(HttpServletRequest request) throws Exception {
    System.out.println("文件上传。。。。");
    //使用fileupload组件完成文件上传
    //获取上传的位置
    String path = request.getSession().getServletContext().getRealPath("/uploads/");
    //判断,路径是否存在
    File file = new File(path);
    if (!file.exists()) {
    //创建该文件夹
    file.mkdirs();
    }
    //解析request对象,获取上传文件项
    DiskFileItemFactory factory = new DiskFileItemFactory(); //磁盘文件项工厂
    ServletFileUpload upload = new ServletFileUpload(factory);

    //解析rquest
    List<FileItem> items = upload.parseRequest(request);
    for (FileItem item : items) {
    //判断当前文件是否是上传文件项
    if (item.isFormField()) {
    //说明文件是普通文件项
    } else {
    //说明是上传文件项
    //获取上传文件的名称
    String fileName = item.getName();
    String uuid = UUID.randomUUID().toString().replace("-", "");
    fileName = uuid + "_" + fileName;
    //完成文件上传
    item.write(new File(path, fileName));
    //删除临时文件
    item.delete();
    }
    }
    return "success";
    }

    /**
    * 使用配置文件解析器的方式上传
    *
    * @param request
    * @param upload
    * @return
    * @throws Exception
    */

    @RequestMapping(path = "/fileUpload2")
    public String fileUpload2(HttpServletRequest request, MultipartFile upload) throws Exception {
    System.out.println("配置文件解析器的方式上传。。。。");
    //使用fileupload组件完成文件上传
    //获取上传的位置
    String path = request.getSession().getServletContext().getRealPath("/uploads/");
    //判断,路径是否存在
    File file = new File(path);
    if (!file.exists()) {
    //创建该文件夹
    file.mkdirs();
    }
    //获取上传文件的名称
    String filename = upload.getOriginalFilename();
    String uuid = UUID.randomUUID().toString().replace("-", "");
    filename = uuid + "_" + filename;
    //完成文件上传
    upload.transferTo(new File(path, filename));

    return "success";
    }

    /**
    * 跨服务器文件上传
    *
    * @param
    * @return
    * @throws Exception
    *//*

    @RequestMapping(path = "/fileUpload3")
    public String fileUpload3(MultipartFile upload) throws Exception {
    System.out.println("跨服务器的文件上传。。。。");
    //定义上传文件服务器路径
    String path = "http://localhost:9090/uploads/";

    //获取上传文件的名称
    String filename = upload.getOriginalFilename();
    String uuid = UUID.randomUUID().toString().replace("-", " ");
    filename = uuid + "_" + filename;
    //创建客户端对象
    Client client = Client.create();
    //和图片服务器进行连接
    WebResource webResource = client.resource(path + filename);
    //上传文件
    webResource.put(upload.getBytes());

    return "success";
    }*/

    /**
    * 跨服务器文件上传
    * @return
    */
    @RequestMapping("/fileupload3")
    public String fileuoload3(MultipartFile upload) throws Exception {
    System.out.println("跨服务器文件上传...");

    // 定义上传文件服务器路径
    String path = "http://localhost:9090/uploads/";

    // 说明上传文件项
    // 获取上传文件的名称
    String filename = upload.getOriginalFilename();
    // 把文件的名称设置唯一值,uuid
    String uuid = UUID.randomUUID().toString().replace("-", "");
    filename = uuid+"_"+filename;

    // 创建客户端的对象
    Client client = Client.create();

    // 和图片服务器进行连接
    WebResource webResource = client.resource(path + filename);

    // 上传文件
    webResource.put(upload.getBytes());

    return "success";
    }

    }

springmvc中文件跨服务器传输的方法的更多相关文章

  1. scp命令 跨服务器传输

    scp命令用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的.可能会稍微影响一下速度.当你服务器硬盘变为只读read onl ...

  2. sqlserver 两 表 数据 复制 (附加 跨服务器 查询的方法)

    一 : 这个sql 语句 可以快速的 将 一 个旧表 中的指定字段的数据 复制到 另一个新表的指定字段中 insert into dbo.Customer ( CustomerId , Custome ...

  3. SpringMVC中文件的上传(上传到服务器)和下载问题(一)

    一.今天我们所说的是基于SpringMVC的关于文件的上传和下载的问题的解决.(这里所说的上传和下载都是上传到服务器与从服务器上下载文件).这里的文件包括我们常用的各种文件.如:文本文件(.txt), ...

  4. SpringMVC中文件的上传(上传到服务器)和下载问题(二)--------下载

    一.建立一个简单的jsp页面. 我们在建好的jsp的页面中加入一个超链接:<a href="${pageContext.request.contextPath}/download&qu ...

  5. 图片分离,试用于各种文件跨站传输,post方法传输

    主要思想:把不通形式的文件或者文字,以字节编码流的形式传递过去然后反解析后重新生成原文件 //------------------------------发送部分------------------- ...

  6. SpringMvc中文件的上传

    本文转自:http://www.cnblogs.com/fjsnail/p/3491033.html 三个方法没有都测试,先get再说 第一个方法慢不知道是不是因为写的代码是按字节读取的,没有用Buf ...

  7. .NET文件跨服务器上传下载

    环境说明:两台服务器服务器为A,服务器为B,服务器B为文件服务器 1.在A和B上创建用户docshareuser,用户名和密码保持一致 2.B服务器上设置附件文件夹Attachments共享,添加用户 ...

  8. springmvc中的一些服务器报错

    这是springmvc的前端控制器的加载格式要求.服务器加载web.xml后,它会在web-inf/下找名为spring[servlet名/handler处理器名]-servlet.xml文件. 可以 ...

  9. SpringMVC中文件上传

    在SpringMVC中上传文件是比较方便的.主要分为以下几个步骤: 1)在applicationContext.xml中增加相应类的引用 <bean id="multipartReso ...

随机推荐

  1. 1个月连载30个设计模式真实案例(附源码),挑战年薪60W不是梦

    本文所有内容均节选自<设计模式就该这样学> 本文自2012年10月29日起持续连载,请大家持续关注.... 序言 Design Patterns: Elements of Reusable ...

  2. 华为C/C++编码规范+《数学之美》感想

    1.排版 1.1 程序块要采用缩进风格编写, 缩进的空格数为4个.(说明: 对于由开发工具自动生成的代码可以有不一致)1.2 相对独立的程序块之间.变量说明之后必须加空行.1.3 循环.判断等语句中若 ...

  3. 大数据学习——搭建第一台Hadoop主机

    类型:学习笔记 参考:尚硅谷大数据系列教程 工具准备 1.VMware 2.CentOS 7 最小安装版 3.远程工具推荐使用 FinalShell 安装系统 1.打开VMware,根据自己的情况配置 ...

  4. Django笔记&教程 6-1 表单(Form)介绍

    Django 自学笔记兼学习教程第6章第1节--表单(Form)介绍 点击查看教程总目录 1 介绍 如果网站要让用户输入并提交数据(比如注册登录),则需要用到表单. 单纯的html也能写出表单,格式一 ...

  5. Python学习周总结(二)

    Python-SecondWeek知识汇总 本周学了好多内容,最头痛的地方还是自己的思维逻辑不过关,还是敲的代码比较少,一个员工管理系统,第一天写搞得头大 ,结果第三遍自己突然懂了,个人的努力才是自己 ...

  6. 菜鸡的Java笔记 第二十 - java 方法的覆写

    1.方法的覆写    当子类定义了与父类中的完全一样的方法时(方法名称,参数类型以及个数,返回值类型)这样的操作就称为方法的覆写    范例:观察方法的覆写 class A{ public void ...

  7. centos7系列的网络yum源配置

    因为新安装centos机器yum比较旧,主要是对网易源进行配置,其它源也差不多.我是在securecrt远程ssh工具操作的,非虚拟机软件上. yum install lszrz -y   安装上传工 ...

  8. 生产者消费者模型及Golang简单实现

    简介:介绍生产者消费者模型,及go简单实现的demo. 一.生产者消费者模型 生产者消费者模型:某个模块(函数等〉负责产生数据,这些数据由另一个模块来负责处理(此处的模块是广义的,可以是类.函数.协程 ...

  9. [luogu4484]最长上升子序列

    标算是状压dp+打表,前者时间复杂度为$o(n^{2}2^{n})$,并通过打表做到$o(1)$ 参考loj2265中关于杨表的相关知识,不难发现答案即$\frac{\sum_{a\vdash n}a ...

  10. [luogu7418]Counting Graphs P

    参考[luogu7417],同样求出最短路,得到二元组$(x,y)$并排序,记$tot_{(x,y)}$为$(x,y)$的数量 其中所给的两个条件,即分别要求: 1.$(x,y)$只能和$(x\pm ...