最新要闻
- 环球热资讯!奥迪“全新”A6曝光!车尾神似5系,换保时捷引擎高级吗?
- 【全球新要闻】孟羽童曾称董明珠不可复制:没有人可以成为第二个董明珠
- 男子机场拍到李若彤被妻子怀疑出轨 李若彤发帖为其澄清 重点聚焦
- 2599元 尼康首款Z卡口电动变焦镜头来了:广角、特写都能拿捏
- 长沙一停车场要求按颜色停放 违停罚100元 律师:没法律效力
- 热点评!大手笔!丰田承认开发电动车失败 决定再砸500亿元
- 观天下!Haynes:有位湖人球员说 让勇士叽叽歪歪继续抱怨吧
- 深交所向*ST海投发出问询函|世界实时
- 环球新消息丨Android 14发布:首批适配机型公布
- 【环球热闻】谷歌首款平板Pixel Tablet发布:自研G2处理器、边框感人
- 环球观点:董明珠“接班人”孟羽童离职:曾称工作21个小时 工作强度太大
- “蔚小理”变成“理哪零”造车新势力淘汰赛加速
- 出行信息早知道!河北最新天气预报、限行提示、高速路况请查收→
- 全球简讯:MIUI 14开发者预览版上线:小米13、小米平板6等喜提安卓14
- 取代OLED!未来iPhone屏幕脱胎换骨:要用MicroLED屏-环球讯息
- 史上最坚固铰链!谷歌Pixel Fold折叠屏手机发布:处理器独一无二
广告
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
Java之图片上传与删除功能的实现
要实现Java图片上传与删除,并使本地和服务器上都能同时正常使用。
1.定义线上线下文件保存和显示路径
application-dev.properties
kapok.SHOW_PIC_PREFIX = http://localhost:8910/image/#mac#kapok.SAVE_PATH = /Users/luoyihao/images/#winkapok.SAVE_PATH = C:\\images\\
application-prod.properties
kapok.SHOW_PIC_PREFIX = http://xxxxx.com:8500/image/kapok.SAVE_PATH = /projects/compositive-system/images/
2.在上面两个配置文件加上图片上传限制配置(不加则会报上传图片大小超出限制的错误)
spring.servlet.multipart.max-file-size = 5MBspring.servlet.multipart.max-request-size = 20MB
3.在Controller导入配置变量
@Value("${kapok.SHOW_PIC_PREFIX}")private String showPicPrefix;@Value("${kapok.SAVE_PATH}")private String savePath;
4.图片上传接口
@RequestMapping(value = "/uploadPic", method = RequestMethod.POST)public Result uploadPic(@RequestParam("id") int id, @RequestParam("file") MultipartFile file) { if (file == null || file.isEmpty()) { return ResultGenerator.genFailResult("上传文件为空"); } String fileName = file.getOriginalFilename(); ListFILE_WHILE_EXT_LIST = Arrays.asList("JPG", "PNG", "JPEG", "GIF"); String fileExtName = fileName.substring(fileName.lastIndexOf(".") + 1); if (FILE_WHILE_EXT_LIST.contains(fileExtName.toUpperCase())) { String newFileName = UUID.randomUUID() + "." + fileExtName; File dest = new File(savePath + newFileName); if(!dest.getParentFile().exists()){ dest.getParentFile().mkdirs(); } try { file.transferTo(dest); PointsExchange pointsExchange = pointsExchangeService.getById(id); pointsExchange.setPic(newFileName); pointsExchangeService.updateById(pointsExchange); return ResultGenerator.genSuccessResult(); } catch (IOException e) { e.printStackTrace(); return ResultGenerator.genFailResult("上传失败"); } } return ResultGenerator.genFailResult("图片格式不正确");}
5.图片删除接口
@RequestMapping(value = "/delPic", method = RequestMethod.POST)public Result delPic(@RequestBody PointsExchange pointsExchange) { File file = new File(savePath + pointsExchange.getPic()); PointsExchange pe = pointsExchangeService.getById(pointsExchange.getId()); pe.setPic(Constants.DEFAULT_IMG); pointsExchangeService.updateById(pe); //判断文件存不存在 if (!file.exists()) { return ResultGenerator.genFailResult("删除文件失败:" + pointsExchange.getPic() + "不存在!"); } else if (Constants.DEFAULT_IMG.equals(pointsExchange.getPic())) { return ResultGenerator.genFailResult("该奖品没有图片"); } else { //判断这是不是一个文件,ps:有可能是文件夹 if (file.isFile()) { boolean res = file.delete(); return ResultGenerator.genSuccessResult(res); } } return ResultGenerator.genFailResult("删除文件失败");}
6.图片展示接口
@RequestMapping(value = "/list", method = RequestMethod.GET)public Result list(@RequestParam(defaultValue = "0") Integer page, @RequestParam(defaultValue = "0") Integer size) { PageHelper.startPage(page, size); QueryWrapper qw = new QueryWrapper(); qw.orderByAsc("points"); Listlist = pointsExchangeService.list(qw); for (PointsExchange pe:list){ pe.setPic(showPicPrefix + pe.getPic()); } PageInfo pageInfo = new PageInfo(list); return ResultGenerator.genSuccessResult(pageInfo);}
7.给继承自WebMvcConfigurationSupport的KapokWebMvcConfigurer类的addResourceHandlers方法增加一条语句
作用:将启动的服务上的/images/作为虚拟路径,映射到真实的图片保存路径,用于图片展示。
registry.addResourceHandler("/image/**").addResourceLocations("file:"+savePath+"/");
8.如果是用Docker部署,部署的时候要给docker run命令加上 -v 服务器真实目录:容器内部目录,实现文件夹的挂载,同步两边的文件。
docker run -d -p 8005:8910 -v /projects/compositive-system/images:/projects/compositive-system/images compositive-system
9.前端增加图片上传按钮
上传图片
10.前端图片上传JS
const url = ref("");const beforeUpload = (file, record) => { url.value = import.meta.env.VITE_APP_BASE_API + "/pointsexchange/uploadPic?id=" + record.id;};const fileList = ref([]);const handleChange = (info) => { if (info.file.status !== "uploading") { console.log(info.file, info.fileList); } if (info.file.status === "done") { console.log("info", info); if (info.file.response.code == 200) { message.success(`${info.file.name}上传成功`); query(); } else { message.error(info.file.response.message); } } else if (info.file.status === "error") { message.error(`${info.file.name}上传失败`); }};const headers = { Authorization: getToken(), "trace-id": uuid.v1(), "trace-user": store.getters.userid,};
11.前端增加删除图片按钮
删除图片
12.前端图片删除JS
// 删除图片const delPic = (row) => { const modal = Modal.confirm(); modal.update({ title: "确认删除该图片吗?", icon: createVNode(ExclamationCircleOutlined), content: "", okText: "删除", okType: "danger", cancelText: "取消", closable: true, maskClosable: true, onOk(e) { const param = Object.assign({}, row); PointsExchangeApi.delPic(param) .then((response) => { const data = response.data; console.log(response); if (data.code === 200) { message.success("删除成功"); } else { message.warning(data.message); } query(); modal.destroy(); }) .catch((error) => { query(); }); }, onCancel() { console.log("Cancel"); modal.destroy(); }, });};
13.前端图片展示(404的时候显示默认图片)
即可。
关键词:
-
Django SQL注入漏洞分析(CVE-2022-28346) 全球报资讯
Django在2022年发布的安全更新,修复了在QuerySet的annotate(),aggregate(),extra()等函数中存在的SQL注入漏洞。
来源: Java之图片上传与删除功能的实现
用户分享 | Dockquery,一个国产数据库客户端的初体验
Django SQL注入漏洞分析(CVE-2022-28346) 全球报资讯
openAI发布v0.2.0了 全球快讯
环球热资讯!奥迪“全新”A6曝光!车尾神似5系,换保时捷引擎高级吗?
【全球新要闻】孟羽童曾称董明珠不可复制:没有人可以成为第二个董明珠
男子机场拍到李若彤被妻子怀疑出轨 李若彤发帖为其澄清 重点聚焦
2599元 尼康首款Z卡口电动变焦镜头来了:广角、特写都能拿捏
长沙一停车场要求按颜色停放 违停罚100元 律师:没法律效力
热点评!大手笔!丰田承认开发电动车失败 决定再砸500亿元
观天下!Haynes:有位湖人球员说 让勇士叽叽歪歪继续抱怨吧
深交所向*ST海投发出问询函|世界实时
环球新消息丨Android 14发布:首批适配机型公布
【环球热闻】谷歌首款平板Pixel Tablet发布:自研G2处理器、边框感人
环球观点:董明珠“接班人”孟羽童离职:曾称工作21个小时 工作强度太大
“蔚小理”变成“理哪零”造车新势力淘汰赛加速
今年来新增专项债已发行逾1.6万亿元
【财经分析】英国制造业增长乏力 与服务业分化明显
出行信息早知道!河北最新天气预报、限行提示、高速路况请查收→
全球简讯:MIUI 14开发者预览版上线:小米13、小米平板6等喜提安卓14
取代OLED!未来iPhone屏幕脱胎换骨:要用MicroLED屏-环球讯息
史上最坚固铰链!谷歌Pixel Fold折叠屏手机发布:处理器独一无二
谷歌Pixel 7a发布:3500元 不标配充电器
世界视讯!学系统集成项目管理工程师(中项)系列20_变更管理
bothhand ns0013lf_bothhand
世界看点:阿里云打5折降价 百度回应:这是感受到了竞争威胁
世界动态:彻底搞懂 Cookie、Session、Token、JWT
在 IDEA 中创建 Java Web 项目的方式(详细步骤教程)|天天聚看点
环球热讯:实验五
观点 | 美国通胀十连降后还需担心吗?
反转!高铁掌掴事件完整视频曝光:双方11秒打3巴掌、王某脏话不断
理想汽车:没有降价的打算 上市定价就是最有竞争力区间 天天简讯
全球微动态丨6月9日上映!《变形金刚7》IMAX海报发布:汽车人、猛兽侠集结
【全球快播报】DDR5内存大跌!24GB高频内存仅399元
俄罗斯质疑美国登月造假:50年前能做到 为何现在反而做不到 每日信息
锻造1-450最省材料攻略_锻造多少会碎-世界热门
动态焦点:去年全球钴产量达19.8万吨 电动汽车消耗7.4万吨
grand theft auto vc 8.1怎么解决_grand theft auto vc 8 1
Java for循环标签跳转到指定位置 全球快报
食品添加剂都是“洪水猛兽”?科技与狠活你知道多少? 今日观点
每日速讯:网友曝光南京江边惊现扬子鳄:我国特有种 一级保护动物
超越1英寸大底!华为P60 Pro凭什么能拿到DXO拍照世界第一 当前看点
Z9良心缩水 尼康发布全画幅微单数码相机Z8:售价27999_焦点要闻
美术315 环球快报
大众软件部门两年亏损250亿 管理层集体被炒 环球观速讯
世界最强货运飞船之一 “太空快递小哥”天舟六号发射升空|环球新要闻
重返斯莱特林!马尔福少爷畅玩《霍格沃茨之遗》-头条焦点
FFT(快速傅里叶变换)
ASP.NET Core MVC 从入门到精通之文件上传 世界快资讯
债市日报:5月10日_世界观焦点
美国债务上限谈判无进展 拜登可能取消G7行程 热文
悦达起亚大地震!管理层轮休1年 公司资不抵债|世界实时
MAXHUB双发x86兆芯、Arm飞腾国产CPU电脑!国产化近95%
单卡30秒跑出虚拟3D仙女老婆!毛孔细节清晰
女子退货8600元鞋被拒收:退回后鞋出现磨损
杭州现不定价咖啡店 营业首日卖400杯亏3500元!创始人回应|微头条
每日聚焦:Python中的交互库-os库
IPS 和 IDS_观热点
每日速看!gai周延参加的综艺有哪些_周延gai百度百科
特斯拉晒美国电价/油价:每天开电车50公里 一月省700块 天天观热点
盗版大神正式出手破解《生化危机4重制版》:Denuvo加密沦陷|当前快报
每日焦点!《生化危机4:重置版》碍事梨演员再发cos照:里昂救救我!
焦点热讯:首发2亿单镜变焦相机!真我11 Pro+图赏
Win10杀软大PK:Defender拿了个倒数第一_焦点速看
泉州市丰泽区东海东宝工业区改造征迁工作指挥部正式揭牌成立
如何衡量软件测试的绩效 环球速讯
无锡阳山桃花源景区可以摘桃子吗_天天速看料
环球焦点!因不富裕 《王国之泪》粉丝攒钱6年才买到Switch
杀疯了!理想汽车公布2023年第一季度财报:营收、交付等多项数据历史最好
男子暴雨天救助流浪猫 专家确认:国家二级保护动物
四月厂商销量榜:国产车强势爆发 前五占三席
散片便宜300元!但还是劝你买盒装CPU|世界动态
热资讯!华能水电:拟收购华能四川能源开发公司100%股权
AI别来搅局,chatGPT的世界不懂低代码 焦点要闻
观察:理想汽车:预计第二季度车辆交付量7.6万至8.1万辆
滚动:1999元起 真我11 Pro+发布:同价位中的2亿像素王
热点!432核心 25个人开发!欧洲自研CPU飞入太空
淘宝天猫历史最大投入618:今年推出直降专场 不用费劲凑单领券 焦点速递
环球观察:爸爸因无人回应退家族群 女儿发声:反而变热闹了
天玑9000性能满载!vivo Pad2评测:操控如PC般行云流水_今日聚焦
环球热消息:4月销量仅6658台!不降价的蔚来,终于把自己玩懵了?
[系统性能优化实践]JVM进阶实战之监控工具(Prometheus) 焦点速递
STM32【HAL库】使用外部SRAM程序
世界新资讯:如何通过appuploader把ipa文件上传到App Store教程步骤
【高端访谈】碳交易市场将如何影响化工行业?——专访全国化工节能(减排)中心秘书长张华
甘肃凉州:让非遗民俗文化“活起来”|观焦点
年度最火的KEEP动感单车免费得:连续88天打卡全额返 焦点速看
实时:可灭电火、油火 北大青鸟车载灭火器620ml 12.92元
真我史上最大底 真我11 Pro+搭载行业最高2亿像素传感器:挑战最强 每日热门
环球快资讯丨特斯拉要疯?向所有用户开放超充 车主拍手友商跺脚
首发2099元!九号电动V30C发布:50km续航、车架终身质保 当前热点
微软修复 Win10 / Win11 上 BlackLotus UEFI 漏洞
【天天报资讯】java读取文件——以自动贩卖机为例
天天热门:最佳软件测试基础入门教程1简介
环球视点!自建CA和公共CA有什么不同?
基于华为云图引擎GES,使用Cypher子查询进行图探索
每日消息!Vue2组件间通讯
每日快讯!【新华500】新华500指数(989001)10日收跌0.65%
当前热讯:成功展商要点——2023第十二届北京国际汽车制造业博览会
环球即时:传音Tecno Camon 20系列发布:五边形镜组极具辨识度