当前位置: 首页 > news >正文

Springmvc中跨服务器文件上传

既然跨服务器,就要开启两个服务器,这里使用两个Tomcat代表两个服务器
文章目录
1.建立图片要上传到的服务器:FileUpload
2.建立上传图片的服务器:Tomcat 9.0.24
3.在Tomcat 9.0.24上部署文件上传的项目,写代码
3.1导入相应jar包
3.2 写一个前端页面
3.3 写后台上传文件代码
1.建立图片要上传到的服务器:FileUpload

 

 2.建立上传图片的服务器:Tomcat 9.0.24


 3.在Tomcat 9.0.24上部署文件上传的项目,写代码
3.1导入相应jar包

<dependencies><dependency><groupId>commons-fileupload</groupId><artifactId>commons-fileupload</artifactId><version>1.3.1</version></dependency><dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.4</version></dependency><dependency><groupId>com.sun.jersey</groupId><artifactId>jersey-core</artifactId><version>1.18.1</version></dependency><dependency><groupId>com.sun.jersey</groupId><artifactId>jersey-client</artifactId><version>1.18.1</version></dependency></dependencies>

3.2 写一个前端页面

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

3.3 写后台上传文件代码

//跨服务器文件上传
@Controller
@RequestMapping("/user")
public class UserController2 {@RequestMapping("/fileUpload2")public String fileUpload(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 resource = client.resource(path + fileName);//上传文件resource.put(upload.getBytes());return "success";}
}

 

这里会报一个异常,代码为405,是因为Tomcat的原因,需要到Tomcat的安装目录的配置文件的web.xml文件中添加一个参数

<init-param><param-name>readonly</param-name><param-value>false</param-value>
</init-param>

其次,还有可能报一个异常为500,NoClassDefFoundError,这个异常是因为虽然导入了依赖,但是没有打入。

 最后可能还会报一个异常,是因为

当以上的异常都解决以后,那么:

相关文章:

Springmvc中跨服务器文件上传

既然跨服务器&#xff0c;就要开启两个服务器&#xff0c;这里使用两个Tomcat代表两个服务器 文章目录 1.建立图片要上传到的服务器&#xff1a;FileUpload 2.建立上传图片的服务器&#xff1a;Tomcat 9.0.24 3.在Tomcat 9.0.24上部署文件上传的项目&#xff0c;写代码 3.1导入…...

常见漏洞扫描工具AWVS、AppScan、Nessus的使用

HVV笔记——常见漏洞扫描工具AWVS、AppScan、Nessus的使用1 AWVS1.1 安装部署1.2 激活1.3 登录1.4 扫描web应用程序1.4.1 需要账户密码登录的扫描1.4.2 利用录制登录序列脚本扫描1.4.3 利用定制cookie扫描1.5 扫描报告分析1.5.1 AWVS报告类型1.5.2 最常用的报告类型&#xff1a…...

Vue学习——【第二弹】

前言 上一篇文章 Vue学习——【第一弹】 中我们学习了Vue的相关特点及语法&#xff0c;这篇文章接着通过浏览器中的Vue开发者工具扩展来进一步了解Vue的相关工作机制。 Vue的扩展 我们打开Vue的官方文档&#xff0c;点击导航栏中的生态系统&#xff0c;点击Devtools 接着我…...

恐怖的ChatGPT!

大家好&#xff0c;我是飞哥&#xff01;不知道大家那边咋样。反正我最近感觉是快被ChatGPT包围了。打开手机也全是ChatGPT相关的信息&#xff0c;我的好几个老同学都在问我ChatGPT怎么用&#xff0c;部门内也在尝试用ChatGPT做一点新业务出来。那就干脆我就趁清明假期这一天宝…...

MIPI D-PHYv2.5笔记(12) -- Clock Lane的ULPS

声明&#xff1a;作者是做嵌入式软件开发的&#xff0c;并非专业的硬件设计人员&#xff0c;笔记内容根据自己的经验和对协议的理解输出&#xff0c;肯定存在有些理解和翻译不到位的地方&#xff0c;有疑问请参考原始规范看 LP Mode的Clock Lane ULPS 尽管Clock Lane不包含常规…...

创建网络数据集

目的&#xff1a;主要是用来做路径规划。 第一步&#xff1a;加载用作构建网络数据集的道路网数据到arcmap。 第二步&#xff1a;做打断处理。【如果线数据未做过打断处理&#xff0c;需要做这一步。】 有两种方式【1、编辑器里面的高级编辑器的打断相交线功能&#xff1b;2、…...

从功能到年薪30W+的测试开发工程师,分享我这10年的职业规划路线

求职&#xff1f;择业&#xff1f;跳槽&#xff1f;职业规划&#xff1f; 作为一名初出茅庐的软件测试员&#xff0c;职业发展的道路的确蜿蜒曲折&#xff0c;面对一次次的岗位竞争&#xff0c;挑战一道道的面试关卡&#xff0c;一边带着疑惑&#xff0c;一边又要做出选择&…...

ChatGPT中文免登陆-ChatGPT中文版上线

ChatGPT不支持地区 ChatGPT 是一个开源平台&#xff0c;可在全球范围内使用&#xff0c;不应该存在地区限制。然而&#xff0c;由于某些原因&#xff0c;可能有地区对 ChatGPT 的访问有限制或屏蔽的情况。 如果您发现自己无法访问 ChatGPT&#xff0c;可以尝试以下解决方法&a…...

多线程之最大并行数

4核8线程&#xff0c;采取超线程技术&#xff0c;将一个核心模拟成两个线程。 public class 最大并行数 {public static void main(String[] args) {//向java虚拟机返回可用处理器的数目//getRuntime获取运行状态&#xff0c;获取可用线程数int countRuntime.getRuntime().ava…...

智慧城市发展的基本原理是什么?

智慧城市的建设与发展遵循一定的基本原理。随着智慧城市的持续迭代升级&#xff0c;智慧城市已经从信息化建设与信息技术产品应用阶段&#xff0c;演进到了信息化与城市现代化深度融合阶段&#xff0c;其基本原理也在发生变化。当前&#xff0c;随着数字技术的发展与成熟应用&a…...

技术宅小伙:利用JAVA开发个常用的编辑接口

大家好&#xff0c;今天的任务是创建一个常用的编辑接口。实际上&#xff0c;这个接口是在大约十点半时给我的&#xff0c;他说要在下午上线。我在7号接口完成之后&#xff0c;通过代码和预言室来实现这个业务。 首先&#xff0c;这是一个评论编辑接口&#xff0c;编辑的内容是…...

Image as set points【ICLR 2023 notable top 5%】

Code&#xff1a;https://github.com/ma-xu/Context-Cluster OpenReview&#xff1a;https://openreview.net/forum?idawnvqZja69 前置知识&#xff1a; 1&#xff09;归纳偏置是否有用&#xff1f; 答&#xff1a;有效&#xff0c;但存在一定的限制。强inductive bias的架构…...

10个超级实用的Python技巧

人生苦短&#xff0c;我学Python。离不开它自带的“buff”。 - 简单好用Python的优势很多&#xff0c;最明显的便是简单、易上手。Python的语法非常简单&#xff0c;比如敲“Hello World”&#xff0c;用其他编程语言要敲6-7行代码&#xff0c;用Python只需要1行代码&#xff…...

【Java语法糖】泛型与源码角度分析静态问题

概念 首先聊聊泛型&#xff0c;泛型是JDK5的新特性。泛型是用来指定不同类型来控制形参具体限制的类型。泛型这种语法机制&#xff0c;只在程序编译阶段起作用&#xff0c;只是给编译器参考的&#xff08;运行阶段泛型没用&#xff09;。写了这么多代码应该能知道泛型的优点就是…...

App 抓包提示网络异常怎么破?

背景 当你测试App的时候&#xff0c;想要通过Fiddler/Charles等工具抓包看下https请求的数据情况&#xff0c;发现大部分的App都提示网络异常/无数据等等信息。以“贝壳找房”为例&#xff1a; Fiddler中看到的请求是这样的&#xff1a; 你可能开始找证书的问题&#xff1a;是…...

操作系统-文件系统

一、总论 1.1 直观感受 这一章虽然名义上很简单&#xff0c;但是我个人觉得真的很难&#xff0c;其难度是要远超于 lab3 和 lab4 的。对于 lab3 和 lab4&#xff0c;其难度主要集中于复杂的函数调用关系上&#xff0c;如果理清了函数调用关系&#xff0c;会发现难度就很容易弄…...

虚拟机无法访问外网的问题

配置&#xff1a; 1、虚拟机采用NAT模式进行配置 2、虚拟机IP&#xff1a;192.168.109.101&#xff0c;掩码&#xff1a;255.255.255.0&#xff0c;网关&#xff1a;192.168.109.2 3、虚拟机网络编辑器&#xff1a;网关192.168.109.2&#xff0c;网段192.168.109.0&#xff0c;…...

软件测试【常见】62 道面试题,不背完这些你还想去面试?

01、您所熟悉的测试用例设计方法都有哪些&#xff1f;请分别以具体的例子来说明这些方法在测试用例设计工作中的应用。 02、您认为做好测试用例设计工作的关键是什么&#xff1f; 03、您在从事性能测试工作时&#xff0c;是否使用过一些测试工具&#xff1f;如果有&#xff0…...

聚观早报 | ChatGPT 停止 Plus 付费;李子柒油管广告收益登顶热搜

今日要闻&#xff1a;ChatGPT 停止 Plus 付费&#xff1b;李子柒油管广告收益登顶热搜&#xff1b;亚马逊游戏部门百名员工被裁&#xff1b;国内一公司推出太空葬&#xff1b;苹果将在印度国金融中心开设零售店ChatGPT 停止 Plus 付费 4 月 5 日消息&#xff0c;ChatGPT 目前已…...

对接多个 Neuron 实例,实现多网关协同分析与设备联动

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dxTiQ9Lw-1680846960656)(C:\Users\DELL\Desktop\0407技术号四\0407技术号四图片\对接多个 Neuron 实例&#xff0c;实现多网关协同分析与设备联动 图1.png)] 3 月份&#xff0c;eKuiper 团队主要进行…...

TDengine 快速体验(Docker 镜像方式)

简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能&#xff0c;本节首先介绍如何通过 Docker 快速体验 TDengine&#xff0c;然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker&#xff0c;请使用 安装包的方式快…...

【Linux】C语言执行shell指令

在C语言中执行Shell指令 在C语言中&#xff0c;有几种方法可以执行Shell指令&#xff1a; 1. 使用system()函数 这是最简单的方法&#xff0c;包含在stdlib.h头文件中&#xff1a; #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...

Python爬虫实战:研究feedparser库相关技术

1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...

Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)

引言&#xff1a;为什么 Eureka 依然是存量系统的核心&#xff1f; 尽管 Nacos 等新注册中心崛起&#xff0c;但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制&#xff0c;是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...

土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等

&#x1f50d; 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术&#xff0c;可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势&#xff0c;还能有效评价重大生态工程…...

leetcodeSQL解题:3564. 季节性销售分析

leetcodeSQL解题&#xff1a;3564. 季节性销售分析 题目&#xff1a; 表&#xff1a;sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...

大模型多显卡多服务器并行计算方法与实践指南

一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...

站群服务器的应用场景都有哪些?

站群服务器主要是为了多个网站的托管和管理所设计的&#xff0c;可以通过集中管理和高效资源的分配&#xff0c;来支持多个独立的网站同时运行&#xff0c;让每一个网站都可以分配到独立的IP地址&#xff0c;避免出现IP关联的风险&#xff0c;用户还可以通过控制面板进行管理功…...

【Linux系统】Linux环境变量:系统配置的隐形指挥官

。# Linux系列 文章目录 前言一、环境变量的概念二、常见的环境变量三、环境变量特点及其相关指令3.1 环境变量的全局性3.2、环境变量的生命周期 四、环境变量的组织方式五、C语言对环境变量的操作5.1 设置环境变量&#xff1a;setenv5.2 删除环境变量:unsetenv5.3 遍历所有环境…...

c++第七天 继承与派生2

这一篇文章主要内容是 派生类构造函数与析构函数 在派生类中重写基类成员 以及多继承 第一部分&#xff1a;派生类构造函数与析构函数 当创建一个派生类对象时&#xff0c;基类成员是如何初始化的&#xff1f; 1.当派生类对象创建的时候&#xff0c;基类成员的初始化顺序 …...