springboot+jersey+tomcat实现跨域方式上传文件到服务器
前言
在服务器上,当我们启动了tomcat,就可以以
http://ip地址:8080/文件路径/文件名
的方式,进行访问到我们服务器上处于tomcat的webapps文件夹下的文件
于是为了可以往上面加文件,我们有两种方式,一种就是直接复制文件到路径上,另一种自然是通过代码的方式,调用接口往上面上传文件
准备工作
首先你得安装tomcat

安装完成后后启动
然后,需要注意的是,为了让我们能够访问文件,那么我们需要做这么一件事,开放服务器的安全策略
把端口8080放开

为了能够成功上传文件,需要放开tomcat的写权限,
即解决报错returned a response status of 405 Method Not Allowed
在tomcat的conf文件夹,找到web.xml文件,添加如下代码
<!-- 使得服务器允许文件写入。--><init-param><param-name>readonly</param-name><param-value>false</param-value></init-param>
注意,该代码需要在servlet标签内部添加,即:
<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>
加完代码记得重启tomcat
上传文件代码
在pom.xml文件加入代码:
<!-- 跨域上传依赖--><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>
@PostMapping("/upLoadImg")@ResponseBodypublic String upLoadImg(MultipartFile myfile){String path = "http://服务器公网ip:8080/tomcat的webapps下的文件夹名称/";//为上传到服务器的文件取名,使用UUID防止文件名重复String type= myfile.getOriginalFilename().substring(myfile.getOriginalFilename().lastIndexOf("."));String filename= UUID.randomUUID().toString()+type;try{
//使用Jersey客户端上传文件Client client = Client.create();WebResource webResource = client.resource(path +"/" + URLEncoder.encode(filename,"utf-8"));webResource.put(myfile.getBytes());System.out.println("上传成功");System.out.println("图片路径==》"+path+filename);}catch(Exception ex){System.out.println("上传失败");}return "上传成功";}
以上会
随机生成uuid作为文件名
如果想保留原本文件名称,参考如下代码
有一个需要注意的是:如果以原文件名命名进行上传,文件名不能包含中文
否则会报错400
@PostMapping("/upLoadImg")@ResponseBodypublic String doRemoteUpload(@RequestParam("file")MultipartFile file){String path = "http://服务器公网ip:8080/tomcat的webapps下的文件夹名称/";String filename= file.getOriginalFilename();try{Client client = Client.create();WebResource webResource = client.resource(path +"/" + filename);webResource.put(file.getBytes());}catch(Exception ex){return "上传文件失败:"+path+"/"+filename;}return "上传文件成功:"+path+"/"+filename;}
导入的import为:
import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.WebResource;
删除服务器文件
@GetMapping("/deleteUploadImg")@ResponseBodypublic ResultVO deleteUploadImg(){String path = "http://服务器公网ip:8080/tomcat的webapps下的文件夹名称/文件名";try{Client client = Client.create();WebResource webResource = client.resource(path);webResource.delete();}catch(Exception ex){return "删除文件失败:"+path+"/"+filename+ ex.getMessage();}return "删除文件成功:"+path+"/"+filename;}
如果需要 删除文件
只需要把文件的路径传入
并且使用WebResource的delete方法即可
结语
以上就是直接通过tomcat跨域上传文件到服务器的方式
相关文章:
springboot+jersey+tomcat实现跨域方式上传文件到服务器
前言 在服务器上,当我们启动了tomcat,就可以以 http://ip地址:8080/文件路径/文件名 的方式,进行访问到我们服务器上处于tomcat的webapps文件夹下的文件 于是为了可以往上面加文件,我们有两种方式,一种就是直接复制文…...
【微信小程序】-- 常用视图容器类组件介绍 -- view、scroll-view和swiper(六)
💌 所属专栏:【微信小程序开发教程】 😀 作 者:我是夜阑的狗🐶 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询! &#…...
猜数字游戏——C++
我们在有了一定的C基础了以后,简单的实现一个案例(其实只要会while循环结构就行了),我们本章内容会实现猜数字游戏,大家有什么语法疑问可以看看我写的:C快速入门_染柒_GRQ的博客-CSDN博客,该博客…...
整数对最小和
题目描述 给定两个整数数组 array1 array2。数组元素按升序排列,假设从array1 、array2中分别取出一个元素可构成一对元素,现在需要取出K个元素并对取出的所有元素求和,计算和的最小值 注意事项 两对元素如果对应于array1 array2中的两个下…...
2023-2-22 -javaagent
周三,天气晴,7度 Java Agent Java Agent也叫作java探针,可以实现动态修改java字节码,完成额外的功能。在java类编译成字节码,在jvm执行之前,它可以读取修改字节码,以来完成额外的功能。 使用…...
JavaScript BOM操作
目录 前言 window 对象 location 对象 navigator 对象 screen 对象 history 对象 前言 BOM(Browser Object Model)指的是浏览器对象模型,它是 JavaScript 和浏览器之间的接口。通过 BOM,JavaScript 可以与浏览器窗口交互&…...
【机器学习 | 强基计划】开山篇 | 机器学习介绍及其类别和概念阐述
🤵♂️ 个人主页: @计算机魔术师 👨💻 作者简介:CSDN内容合伙人,全栈领域优质创作者。 机器学习 | 强基计划系列 (一) 作者: 计算机魔术师 版本: 1.0 ( 2022.2.25) 注释:文章会不定时更新补充 文章目录 前言一、机器学习概览1.1 有监督学习和无监督学习1.1.…...
华为OD机试真题Java实现【合规数组】真题+解题思路+代码(20222023)
合规数组 题目 给定一个正整数数组 检查数组中是否存在满足规则的数组组合 规则: A = B + 2C 🔥🔥🔥🔥🔥👉👉👉👉👉👉 华为OD机试(Java)真题目录汇总 ## 输入 第一行输出数组的元素个数 接下来一行输出所有数组元素,用空格隔开 输出 如果存在满…...
BoostSearcher搜索引擎项目
BoostSearcher搜索引擎项目 1.BoostSearcher这个项目是什么? 答:一个为Boost文档建立索引的站内搜索引擎,简单的说就是一个类似于csdn站内文档搜索框。 项目展示: gitee:https://gitee.com/zxlfx/boost-search-engine-project …...
【模拟集成电路】频率综合器(Frequency Synthesizer,FS)设计
应用于无线局域网的频率综合器设计前言频率综合器简介各部分链接链接:前言 本文主要内容是对频率综合器或称为PLL 做出简单介绍,为课程设计部分章节内容,后需给出各部分的设计方案,以及测试结果。 频率综合器简介 无线收发系统中…...
实例8:机器人的空间描述和变换仿真
实例8:机器人的空间描述和变换仿真 实验目的 通过刚体与刚体的平动、转动基础知识的学习,熟悉位姿的描述通过Python编程实践,可视化学习坐标系的变换,熟悉空间变换 实验要求 通过python编程,输入一指定向量和对应的…...
网络 导航
目录内容链接网络网络参考文章:【网络】http请求 调试网络问题解决参考文章:【问题解决】网络 IP DNS解析网络问题解决参考文章:【问题解决】网络 TCP 规则 抓包网络问题解决参考文章:【问题解决】网络 Http请求 调试网络问题解决…...
Web Spider Ast-Hook 浏览器内存漫游-数据检索
文章目录一、资源下载二、通过npm安装anyproxy模块三、anyproxy的介绍以及基本使用1. anyproxy的功能介绍2. anyproxy的基本使用四、给浏览器挂代理五、实操极验demo案例总结提示:以下是本篇文章正文内容,下面案例可供参考 一、资源下载 Github&#x…...
计算机网络笔记、面试八股(二)——HTTP协议
本章目录2. HTTP协议2.1 HTTP协议简介2.2 HTTP协议的优点2.3 HTTP协议的缺点2.4 HTTP协议属于哪一层2.5 HTTP通信过程2.6 常见请求方法2.7 GET和POST的区别2.8 请求报文与响应报文2.8.1 HTTP请求报文2.8.2 HTTP响应报文2.9 响应状态码2.10 HTTP 1.0和1.1的区别2.10.1 长连接2.1…...
docker快速上手使用
文章目录一、docker概述1. 为什么需要docker2. 什么是docker3. docker和虚拟机的区别4. docker三要素二、docker安装1. 添加app源2. 安装docker社区版3. 更换国内docker镜像源三、docker基本使用方法1. 获取镜像2. 查看当前系统中的docker镜像3. 运行docker容器4. 查看当前存在…...
<c++> 类的构造函数与类的析构函数
文章目录类的构造函数什么是构造函数声明和定义构造函数如何使用构造函数默认构造函数类的析构函数什么是析构函数声明和定义析构函数小练习银行账户执行效果类的构造函数 什么是构造函数 Q:什么是类的构造函数 A:构造函数是类的一种特殊成员函数,不需…...
华为OD机试真题Java实现【玩牌高手】真题+解题思路+代码(20222023)
玩牌高手 给定一个长度为n的整型数组,表示一个选手在n轮内可选择的牌面分数。选手基于规则选牌, 请计算所有轮结束后其可以获得的最高总分数。 选择规则如下: 1、在每轮里选手可以选择获取该轮牌面,则其总分数加上该轮牌面分数,为其新的总分数。 2、选手也可不选择本轮…...
Hive Sql整体优化思路
如果遇到sql性能问题,可以先查看4040页面的sql执行信息。一个sql解析为多个stage,一个stage分为多个task。对问题Sql的某一个stage,基本的分析思路如下:所有的task都慢,检查下是否有笛卡尔积(关联字段重复值、关联字段…...
【华为OD机试模拟题】用 C++ 实现 - 数组的中心位置(2023.Q1)
最近更新的博客 华为OD机试 - 入栈出栈(C++) | 附带编码思路 【2023】 华为OD机试 - 箱子之形摆放(C++) | 附带编码思路 【2023】 华为OD机试 - 简易内存池 2(C++) | 附带编码思路 【2023】 华为OD机试 - 第 N 个排列(C++) | 附带编码思路 【2023】 华为OD机试 - 考古…...
取指定数值的地址 (int 转 void *)
int a 0x12345678 是一个地址void *p (void *)a; 提示下马错误;Error: cast to pointer from integer of different size [-Werrorint-to-pointer-cast]This error occurs when there is an attempt to convert an integer to a pointer of a different size. Thi…...
二、空间碎片聚类-轨道计算与J2000坐标系实现
1. 整体思路 在空间碎片监测、卫星对地观测等任务中,需要精确知道卫星和空间目标在某一时刻的位置。通常我们使用开普勒轨道六要素(半长轴、偏心率、倾角、升交点赤经、近地点幅角、真近点角)来描述轨道,并通过轨道动力学外推得到任意时刻的位置。本文实现了一套基于J2000…...
GME多模态向量模型实战部署:华为云ModelArts一键启动图文检索
GME多模态向量模型实战部署:华为云ModelArts一键启动图文检索 1. 引言:多模态检索的实用价值 想象一下,你正在管理一个大型数字资产库,里面有成千上万的图片和文档。当你想找"去年会议上讨论过的那张数据流程图"时&am…...
【仅限头部金融科技团队内部流通】FastAPI 2.0 AI流式响应安全加固方案:防内存溢出、防连接耗尽、防Token泄露(含OWASP ASVS v4.0合规对照表)
第一章:FastAPI 2.0 AI流式响应安全加固方案全景概览FastAPI 2.0 引入了对 Server-Sent Events(SSE)与异步生成器的原生增强支持,使大语言模型(LLM)的流式响应(如 token-by-token 输出ÿ…...
AI结对编程:与快马AI对话式迭代,智能优化你的系统ER图设计
AI结对编程:与快马AI对话式迭代,智能优化你的系统ER图设计 最近在做一个员工管理系统的数据库设计,发现ER图设计是个需要反复推敲的过程。传统方式下,每次修改都要手动调整图形,效率很低。直到尝试了InsCode(快马)平台…...
Qwen3-TTS-VoiceDesign应用案例:智能硬件设备嵌入式多语种语音播报
Qwen3-TTS-VoiceDesign应用案例:智能硬件设备嵌入式多语种语音播报 1. 智能语音播报的市场需求 现在的智能硬件设备越来越普及,从智能家居到车载系统,从工业设备到消费电子产品,几乎都需要语音交互功能。但很多设备面临一个共同…...
Pi0一键部署教程:nohup后台运行+log实时监控+进程安全终止
Pi0一键部署教程:nohup后台运行log实时监控进程安全终止 本文介绍如何快速部署和运行Pi0机器人控制模型,重点讲解后台运行、日志监控和进程管理的实用技巧,让AI应用稳定运行在服务器环境中。 1. 项目简介:什么是Pi0? …...
云计算算力价格波动:行业重构与竞争新格局
云计算价格反转:从价格战到集体涨价2025年4月,阿里云率先发起价格战,京东云、腾讯云、华为云等纷纷跟进,“最高降幅达60%”的口号让行业陷入价格混战。然而,到了2026年3月,市场风向突变,谷歌云、…...
手机号查询QQ号:技术解析与实用指南
手机号查询QQ号:技术解析与实用指南 【免费下载链接】phone2qq 项目地址: https://gitcode.com/gh_mirrors/ph/phone2qq 当你更换手机后忘记QQ账号,或需要验证手机号与QQ的绑定关系时,phone2qq项目提供了一种高效解决方案。这是一个基…...
提示工程代码审查避坑指南:10个容易犯的低级错误
提示工程代码审查避坑指南:10个容易犯的低级错误 引言:为什么提示工程需要“代码审查”? 在AI时代,提示词(Prompt)是人类与大语言模型(LLM)沟通的“桥梁”。就像程序员写代码需要评审…...
阿里千问Qwen3.5-Omni:全模态大模型的新王者
Qwen3.5-Omni:全模态能力的新巅峰3月30日,阿里发布的千问新一代全模态大模型Qwen3.5-Omni,在音视频理解、识别、交互等215项任务中取得SOTA(性能最佳),超越Gemini-3.1 Pro,成为全球最强的全模态…...
