SpringMVC学习笔记【part6】跨服务器文件上传

java 跨服务器上传,下载,预览,删除 java 跨服务器上传,下载,预览,删除,安装ftp服务器 阅读详情

SpringMVC 学习笔记 Part6

1. 服务器划分的目的

在实际开发中,我们会有很多处理不同功能的服务器。例如:

  1. 应用服务器:负责部署我们的应用。

  2. 数据库服务器:运行我们的数据库。

  3. 缓存和消息服务器:负责处理大并发访问的缓存和消息。

  4. 文件服务器:负责存储用户上传文件的服务器。
    在这里插入图片描述

分服务器处理的目的是让服务器各司其职,从而提高我们项目的运行效率。

2. 跨服务器文件上传

前置工作:

我们需要在文件接受服务器的 apache-tomcat-8.5.69\conf 目录下找到 web.xml,加入下列内容。加入此行的含义是:接收文件的目标服务器可以支持写入操作。

<servlet>
    <servlet-name>default</servlet-name>
    <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
    <init-param>
        <param-name>debug</param-name>
        <param-value>0</param-value>
    </init-param>
    <init-param>
        <param-name>listings</param-name>
        <param-value>false</param-value>
    </init-param>
    <!-- 添加的初始化参数如下 -->
    <init-param>
        <param-name>readonly</param-name>
        <param-value>false</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

第一步:导入开发需要的jar包坐标。

<!-- 文件上传相关jar包 -->
<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>

<!-- 处理跨服文件上传的jar包 -->
<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>

第二步:编写文件上传的 jsp 页面。

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

第三步:创建 CommonsMultipartResolver 进 IoC 容器。

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <property name="maxUploadSize" value="10485760"/>
</bean>

第四步:编写控制器方法的代码。

// 定义图片服务器的请求路径 
public static final String FILESERVERURL = "http://localhost:9090/myspringmvc/uploads/";

@RequestMapping("/myupload")
public String myUpload(MultipartFile upload) throws Exception { 

    // 获取到上传文件的名称 
    String filename = upload.getOriginalFilename();
    String uuid = UUID.randomUUID().toString().replaceAll("-", "").toUpperCase();
    // 把文件的名称唯一化 
    filename = uuid+"_"+filename; 
    
    // 向图片服务器上传文件 
    // 创建 sun 公司提供的 jersey 包中的客户端对象
    Client client = Client.create(); 
    // 连接图片服务器 
    WebResource webResource = client.resource(FILESERVERURL+filename); 
    // 上传文件 
    webResource.put(upload.getBytes()); 
    
    return "success"; 
}

3. 常见错误解决办法

returned a response status of 400 :文件名请改成英文名。

returned a response status of 403 :上文所说的前置工作没有做好,需要在tomcat的web.xml里加入readonly=false。

returned a response status of 409 :接收服务器没有FILESERVERURL请求路径上的相关文件夹,这时我们需要打开部署的target包手动添加uploads文件夹(添加到target包里与WEB-INF、META-INF、index.jsp同级的那个目录里),在idea添加是没有用的。

三种方法进行跨服务器文件传输 今天需要在一个centOS服务器上编译一个工具, 我的本地主机是ubuntu, 但是由于服务器是合规环境, 没有文件传输的接口, 也不能访问github等外网, 所以很多依赖只能下载到ubuntu然后在想办法搞到服务器上. 这种场景有三种简单有用的办法, 整理一下. 阅读详情

相关推荐

Java FTP 实现跨服务器文件上传下载

Java 程序实现的 FTP 跨服务器文件上传下载功能。

linux 服务器之间传输文件的方式

情景:有时迁移项目,一般人就想到需要在服务器下载到win本地电脑上面,再上传到目的服务器,这样若是文件大,下载的速度都足够让你歇一天了。遇到这问题,怎么解决呢?

行走天下 2744

STM32H743 SD卡读写避坑实录:CubeMX配置MDMA给FATFS,我的FreeRTOS项目踩了哪些雷?

本文详细解析了STM32H743在CubeMX配置中结合SDMMC、MDMA与FATFS的实战避坑指南,特别针对FreeRTOS环境下的SD卡读写问题提供了解决方案。从时钟配置到FATFS参数设置,再到DMA缓存维护和FreeRTOS集成技巧,帮助开发者高效解决数据损坏、DMA传输错误等常见问题,提升项目稳定性。

weixin_30878501的博客 495

linux php sftp实现跨服务器文件传输

linux php sftp实现跨服务器文件传输什么是SFTP?SFTP 与 FTP 区别终端使用sftpsftp可用命令php 中通过SSH2 扩展模块 使用SFTP安装php SSH2 扩展编写SFTP使用类 什么是SFTP? SFTP是一种安全的文件传输协议,一种通过网络传输文件的安全方法;它确保使用私有和安全的数据流来安全地传输数据。 SFTP要求客户端用户必须由服务器进行身份验证,并且数据传输必须通过安全通道(SSH)进行,即不传输明文密码或文件数据。它允许对远程文件执行各种操作,有点像远程文件

专注于php高级知识分享 2941

基于大模型的癫痫手术预测与决策系统技术方案文档

基于大模型的癫痫手术预测与决策系统技术方案文档

嵌入式毕设/课设资料清单(速查手册·文档模板·题库,持续更新)→ 见最新文章 977

通俗理解Xgboost

为了简化计算,XGBoost采用了一阶导数(梯度)和二阶导数(Hessian)来近似损失函数的变化,从而推导出叶子节点值的更新公式。其中 z 就是所有树的叶子节点分数之和。通过这两个正则化项,XGBoost能够在优化目标函数时,不仅考虑损失函数的最小化,还考虑了模型的复杂度,从而达到更好的泛化性能。正则化项通常包括两个部分:一个是与叶子节点数量相关的项,另一个是与叶子节点输出值大小相关的项。通过这种方式,XGBoost能够有效地计算出每个叶子节点的值,同时通过正则化项来平衡模型的复杂度和泛化能力。

金融风控笔记 755

SpringBoot上传文件到服务器(跨服务器上传)

上传文件到服务器,跨服务器上传文件

m0_71751187的博客 3675

HSPICE用户必看:用Sigrity Broadband SPICE解决复杂封装建模的3个技巧

本文为HSPICE用户分享了三个使用Sigrity Broadband SPICE解决复杂封装建模难题的实战技巧。通过将宽频带S参数高效转换为时域SPICE模型,能显著提升仿真速度、保障收敛性,并精准分析谐振、返回路径不连续及超多端口PDN等关键问题,助力实现高效稳定的系统级信号与电源完整性分析。

metal的博客 601

【SpringBoot】如何优雅的实现跨服务器上传文件

项目完整代码链接:代码链接 文章目录一、创建项目1.1 上传文件的项目1.2 创建fileuploadserver 保存文件服务器二、编写服务器接收文件上传代码三、分析存在问题以及解决办法3.1 问题分析3.2 修改项目fileupload的配置3.3 创建fileuploadserver1 项目3.4 编写服务器接收文件上传代码3.5 编写文件服务器接收代码3.6 效果展示 一、创建项目 sp...

江小举的博客 4366

【Arduino】入门篇——交通信号灯

模拟交通信号灯一、实验目的二、实验材料三、电路图四、实验过程五、代码块六、实验结果 一、实验目的 我想大家都看见过交通灯,就是马路上十字路口的红绿灯。如果您开过车,我想您一定仔细观察过交通灯,如果您还没有驾驶过车,您是否仔细观察过交通灯呢?交通灯包括三种个不同颜色的灯:红灯、黄灯和绿灯。 每个路口的红绿灯切换的时间并不是相同,这个是根据不同路口的车流情况来设定的,下面就是模仿交通灯的一个实验 二...

漠宸离若的博客 1万+

飞塔防火墙认证绕过漏洞(CVE-2022-40684)深度剖析与实战复现

本文深度剖析了Fortinet飞塔防火墙高危认证绕过漏洞CVE-2022-40684的原理与影响。该漏洞允许攻击者通过构造包含特定Forwarded头和User-Agent的HTTP请求,无需凭证即可绕过认证,以管理员身份访问设备。文章详细演示了从环境搭建到实战复现,最终植入SSH密钥获取控制权的完整过程,并提供了漏洞挖掘技巧与关键防御建议。

d6e7f8g9h的博客 709

黑马就业班——SpringMVC框架:part2

1、响应数据和结果视图 1.1 Controller控制器类方法的返回值类型   参考项目:springmvc_day02_01_response 。   controller控制器类的方法可以返回:字符串、void、ModelAndView对象   注意: 1、success.jsp标签记得加:isELIgnored="false"属性,否则在jsp文件无法使用EL表达式! 如:<%@...

LKJgdut的博客 343

复合材料仿真PAM-COMPOSITE 全工艺案例实操参数模板

复合材料仿真PAM-COMPOSITE 全工艺案例实操参数模板

源代码杀手的博客 281

SpringMVC跨服务器文件上传

  上一次讲解了SpringMVC对于传统文件的上传,SpringMVC主要完成了对request请求的解析。这一节来讲解SpringMVC如何跨服务器进行文件上传   为什么需要跨服务器进行文件上传?原因为了使我们服务器能专一并且高效的做事情,可以把服务器分为应用服务器,缓存服务器,数据库服务器,文件服务器。而文件服务器就是专门用来存储应用上传的文件,当客户端请求时,直接从文件服务器来进行响应,...

博客 680

Python爬取公交线路信息及站点shp数据 文末附数据下载地址

三、现在已经获取到了各个线路名称、链接,以及所途径的上下行站点,那么接下来就应该对开始对第三页url进行信息采集,即本次爬虫的最终目的:爬取所有站点的GPS坐标数据。但坑就坑在,二环一号线属于环线,所以只有左侧有站点数据,而其他非环线车次的站点数据分有上下行,如果用正则匹配,则分不清楚到底哪些是上行站点哪些是下行站点。以前爬过百度地图,当时用的是API平台,加上网站比较规范,所以标签节点什么的都比较清晰,但这次由于特殊原因所选择的网站为公交网,废话不多说直接开始吧。checi=二环一号线。

J_Giser的博客 1318

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Springmvc中跨服务器文件上传

这里会报一个异常,代码为405,是因为Tomcat的原因,需要到Tomcat的安装目录的配置文件的web.xml文件中添加一个参数。其次,还有可能报一个异常为500,NoClassDefFoundError,这个异常是因为虽然导入了依赖,但是没有打入。既然跨服务器,就要开启两个服务器,这里使用两个Tomcat代表两个服务器。3.在Tomcat 9.0.24上部署文件上传的项目,写代码。3.在Tomcat 9.0.24上部署文件上传的项目,写代码。2.建立上传图片的服务器:Tomcat 9.0.24。

you4580的专栏 504

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Springboot——跨服务器文件上传

一、文件目录 注释: Servers : Tomcat服务器(只要安装tomcat就会有) springboot : 服务器1. 服务器端口号改为8090(文件夹虽然爆红,但是不影响) uploadController : 控制结构 JesyFileUploadUtil : 自定义的jesy工具类 application.properties : 端口号修改 ssm_image_server : 服务器2(因为要实现的效果是跨服务器文件上传,所以自己模拟了一个服务器,需要用tomcat启动,端口号未更

weixin_42773097的博客 1416

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

跨服务器实现上传操作

跨服务器实现上传操作 标题 参考: https://www.bilibili.com/video/BV1mE411X7yp?p=193b站ssm框架中的文件上传193集 https://www.bilibili.com/video/BV1mE411X7yp?p=197b站ssm框架中的文件上传197集 一、前期准备 1.利用IDEA创建两个Maven项目。 (1)fileuploadServer(图片服务器) (2)day2_02FileResponse(应用服务器) 2.两个Tomcat服务器,改变N

zeron01的博客 433

如何在两台服务器之间传输文件

如何在两台服务器之间传输文件呢?下载到本地再上传到另一台服务器上?NO!一句命令简单解决~

茹茹守护者的博客 1万+

实现跨服务器文件上传

第一步,打开两个tomcat不同版本,一个tomcat用来实现文件上传(暂且称为A服务器)这里我用的maven工程,一个tomcat用来接收文件(暂且称为b服务器)这里可以用一个普通的web工程; 首先打开b服务器的web.xml文件添加 <init-param> <param-name>readonly</param-name> ...

zwj13603571674的博客 499

SpringMVC跨服务器方式文件上传

SpringMVC 跨服务器方式文件上传 <!--允许跨服务器上传文件--> <dependency> <groupId>com.sun.jersey</groupId> <artifactId>jersey-core</artifactId> <version>1.18.1</version> </dependency> <depe

阿颜的博客 284

springmvc+jersey实现图片跨服务器上传到并回显

需求 所需jar包 springmvcxml开启文件上传 简单上传界面 ajax提交图片表单 UploadController 测试 struts2都支持文件的上传,更好的springmvc当然也支持了~ 这里就来用一个小例子来实现需求上传图片,图片里面回显。 使用Ajax可以实现页面不刷新图片回显。所需jar包由于此案例是文件的上传,所以除了springmvc本来的jar包外还需要: 文件上传

苏苏爱自由 4090

curl 模拟表单提交文件 跨域跨服务器上传文件

A服务器文件上传到B服务器 1配置 index.php根目录  A服务器   1上传域名配置 define('API_ROOT',"http://www.b2cimg.com"); //图片服务器地址 2 临时文件目录配置 B服务器 1域名配置 //跨域请求来源 header('Access-Control-Allow-Origin: *'); head

a6749920的博客 3192

SpringMVC+Jersey实现跨服务器上传图片

场景 比如:填写用户信息的时候,除了填写常规的form表单标签外,还需要上传头像,点击浏览选择头像后,不刷新页面也能马上在页面的文件区域显示所上传的图片 这就是使用了跨服务器上传图片的技术,接下来就介绍如何跨服务器上传图片 准备 服务器 既然说了是跨服务器上传,那么首先需要两台服务器,这里使用两个不同端口的tomcat来作为不同的服务器 一台作为当前项目运行的服务器,一台作为图...

张育嘉的博客 1962

0.4 文件与文件夹:数据是怎么存放的,一篇讲清目录树

电脑里几万个文件怎么归类?本文讲清文件是有名字的数据单位、文件夹(目录)是可层层嵌套的收纳容器,二者共同构成目录树,最顶层是根目录;建立字节/KB/MB/GB 的大小直觉,介绍 Linux 一切皆文件的设计;用一张表讲清复制、移动、重命名、删除的区别,以及 Delete 进回收站、Shift+Delete 永久删除的差异;最后从安全视角讲文件上传(伪装脚本上传即 WebShell)与路径穿越(ZipSlip 把文件写到敏感位置),提醒凡是文件读写都要警惕路径被操纵。

一个安全白帽子的成长记录:Web 安全、漏洞复现、内网渗透。完整目录在 gysec.top 256
上一篇: SpringMVC学习笔记【part5】本地文件上传
下一篇: SpringMVC学习笔记【part7】异常处理
Parker7
博客等级 码龄7年 18粉丝 74原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Parker7

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值