springmvc中文件跨服务器传输的方法
//1、首先在tomcat的新端口上重新开启一个tomcat服务器fileuploadserver服务器,并且在webapps下新建一个uploads文件夹
//2、在业务服务器上书写前端页面和后端的方法
// 注意:需要确定tomcat是否有写入权限如果没有需要修改tomcat的web.xml配置文件,赋予可写权限
<%@ 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>
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中文件跨服务器传输的方法的更多相关文章
- scp命令 跨服务器传输
scp命令用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的.可能会稍微影响一下速度.当你服务器硬盘变为只读read onl ...
- sqlserver 两 表 数据 复制 (附加 跨服务器 查询的方法)
一 : 这个sql 语句 可以快速的 将 一 个旧表 中的指定字段的数据 复制到 另一个新表的指定字段中 insert into dbo.Customer ( CustomerId , Custome ...
- SpringMVC中文件的上传(上传到服务器)和下载问题(一)
一.今天我们所说的是基于SpringMVC的关于文件的上传和下载的问题的解决.(这里所说的上传和下载都是上传到服务器与从服务器上下载文件).这里的文件包括我们常用的各种文件.如:文本文件(.txt), ...
- SpringMVC中文件的上传(上传到服务器)和下载问题(二)--------下载
一.建立一个简单的jsp页面. 我们在建好的jsp的页面中加入一个超链接:<a href="${pageContext.request.contextPath}/download&qu ...
- 图片分离,试用于各种文件跨站传输,post方法传输
主要思想:把不通形式的文件或者文字,以字节编码流的形式传递过去然后反解析后重新生成原文件 //------------------------------发送部分------------------- ...
- SpringMvc中文件的上传
本文转自:http://www.cnblogs.com/fjsnail/p/3491033.html 三个方法没有都测试,先get再说 第一个方法慢不知道是不是因为写的代码是按字节读取的,没有用Buf ...
- .NET文件跨服务器上传下载
环境说明:两台服务器服务器为A,服务器为B,服务器B为文件服务器 1.在A和B上创建用户docshareuser,用户名和密码保持一致 2.B服务器上设置附件文件夹Attachments共享,添加用户 ...
- springmvc中的一些服务器报错
这是springmvc的前端控制器的加载格式要求.服务器加载web.xml后,它会在web-inf/下找名为spring[servlet名/handler处理器名]-servlet.xml文件. 可以 ...
- SpringMVC中文件上传
在SpringMVC中上传文件是比较方便的.主要分为以下几个步骤: 1)在applicationContext.xml中增加相应类的引用 <bean id="multipartReso ...
随机推荐
- vuex基础(vuex基本结构与调用)
import Vue from 'vue'; import Vuex from 'vuex'; Vue.use(Vuex); const modulesA = { state:{//状态 count: ...
- scrapy_电影天堂多页数据和图片下载
嵌套的 爬取 先获取第一页的标题 点击标题到第二页的图片url 1.创建项目 > scrapy startproject scrapy_movie_099 2.创建爬虫文件 spiders> ...
- java-UDP协议接收和发送数据
UDP发送数据的步骤: A:创建发送端的Socket服务对象 B:创建数据,并把数据打包 C:通过Socket对象的发送功能发送数据包 D:释放资源 public class SendDemo { ...
- 看动画学算法之:hashtable
目录 简介 散列表的关键概念 数组和散列表 数组的问题 hash的问题 线性探测 二次探测 双倍散列 分离链接 rehash 简介 java中和hash相关并且常用的有两个类hashTable和has ...
- [spojRNG]Random Number Generator
先将所有数加上Ri,即变为区间[0,2Ri],考虑容斥,将区间容斥为[0,+oo)-[2Ri,+oo),然后对[2Ri,+oo)令$bi=ai-2Ri$,相当于范围都是[0,+oo)问题转化为求n个正 ...
- [atAGC048E]Strange Relation
考虑对于$\{a_{i+1},...,a_{n}\}$,在其前面插入$a_{i}$对$x_{i}$的影响(不考虑$a_{1}$到$a_{i-1}$): 1.$x_{i}=0$,因为其前面没有数字了 2 ...
- SpringCloud升级之路2020.0.x版-41. SpringCloudGateway 基本流程讲解(3)
本系列代码地址:https://github.com/JoJoTec/spring-cloud-parent 我们继续分析上一节提到的 WebHandler.加入 Spring Cloud Sleut ...
- vue-ref指令
$refs是数组
- layui增加转圈效果
var loadix = layer.load(1, {shade: [0.1,'#fff']}); layer.close(loadix);
- springbootjpa的dao层也会出现找不到javabean的操作
使用jpa的过程中,有一次使用dao写了一个 SysCompany findByName(String name);但实体类中没有name这个属性就会报错.bean注入异常