最新要闻
- 如何压缩图片大小?简单的图片压缩方法分享
- 世界视点!一降再降!一汽丰田首款纯电SUV大促:优惠6万到手13.98万起
- 祈福者放生2.5万斤鲇鱼被追责:属外来物种 危害极大
- 合资燃油车危险了!比亚迪秦PLUS DM-i冠军版上市7天订单超3.2万
- 当前动态:促销“狂飙”结束 特斯拉Model Y全系已上涨2000元
- 微软进一步拥抱AI:Win11新功能“记住”用户常用窗口布局
- 营收创6年最大跌幅!苹果被曝裁员外包员工 库克最后手段?
- 时隔3年半漫威重返内地!《蚁人与黄蜂女:量子狂潮》今日上映
- 天天热头条丨《星际争霸2》世界冠军李培楠回国:黄旭东等为其接风
- 当前视讯!三亚3米长搁浅抹香鲸救治无效不幸死亡:或被鲨鱼咬伤
- 全球看热讯:干货分享丨店长管理的五大核心你抓住了吗!
- 当前要闻:没买车的等等党们:赢了
- 每日看点!男子购买1200元年货32天快递仍未送达 邮政客服:车还在路上
- 每日动态!注意!特斯拉宣布召回超36万辆车 会突然停车发生车祸:马斯克火速回应
- 环球新动态:iPadOS 16:拖后腿了
- 【环球报资讯】2023开年火药味儿十足 “大内存”机型卷出了新高度
广告
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
Java 文件上传
(资料图片)
一:配置springBoot上传文件限制
spring: servlet: multipart: max-file-size: 100MB #单个文件大小 max-request-size: 1024MB #总文件大小
二:代码
import org.springframework.web.bind.annotation.*;import org.springframework.web.multipart.MultipartFile;import org.springframework.web.multipart.support.StandardMultipartHttpServletRequest;import javax.servlet.http.HttpServletRequest;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.util.Base64;import java.util.Locale;import java.util.UUID;@RestController@RequestMapping("upload")public class UploadController { /** * 上传方式一,从请求体中获取文件信息 * @param request * @return * @throws IOException */ @PostMapping("method1") public String upload1(HttpServletRequest request) throws IOException { MultipartFile file = ((StandardMultipartHttpServletRequest) request).getFile("file"); String fileName = file.getOriginalFilename(); String newName=UUID.randomUUID().toString()+fileName.substring(fileName.indexOf(".")); // 获取当前操作系统 String osName = System.getProperties().get("os.name").toString().toLowerCase(Locale.ROOT); String path=""; if(osName.startsWith("win")){ path="D:\\Test\\"; }else{ path="/mnt/test"; } File saveFile=new File(path+newName); if(!saveFile.getParentFile().exists()){ saveFile.getParentFile().mkdirs(); } file.transferTo(saveFile); return saveFile.getPath(); } /** * 上传方式2 MultipartFile 上传 * @param file * @return * @throws IOException */ @PostMapping("method2") public String upload2(@RequestParam("file") MultipartFile file) throws IOException { String fileName = file.getOriginalFilename(); String newName=UUID.randomUUID().toString()+fileName.substring(fileName.indexOf(".")); // 获取当前操作系统 String osName = System.getProperties().get("os.name").toString().toLowerCase(Locale.ROOT); String path=""; if(osName.startsWith("win")){ path="D:\\Test\\"; }else{ path="/mnt/test"; } File saveFile=new File(path+newName); if(!saveFile.getParentFile().exists()){ saveFile.getParentFile().mkdirs(); } file.transferTo(saveFile); return saveFile.getPath(); } /** * base64 图片上传 * @param base64 * @return */ @PostMapping("method3") public String upload3(@RequestParam("base64")String base64){ String base64Data = base64.split(",")[1]; Base64.Decoder decoder = Base64.getDecoder(); byte[] bytes = decoder.decode(base64Data); // 获取当前操作系统 String osName = System.getProperties().get("os.name").toString().toLowerCase(Locale.ROOT); String path=""; if(osName.startsWith("win")){ path="D:\\Test\\"; }else{ path="/mnt/test"; } String newName=UUID.randomUUID().toString()+".png"; File saveFile=new File(path+newName); if(!saveFile.getParentFile().exists()){ saveFile.getParentFile().mkdirs(); } FileOutputStream fos = null; try { fos = new FileOutputStream(saveFile); fos.write(bytes); } catch (IOException e) { e.printStackTrace(); } finally { if (fos != null) { try { fos.close(); } catch (IOException e) { e.printStackTrace(); } } } return saveFile.getPath(); } public static void main(String[] args) { String data = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACtWK6eAAAFJklEQVR4Xu3VsRGAQAwEsaf/oqEBINj0RO7A8u9w3efcx0eAwKvAJRAvg8C3gEC8DgI/AgLxPAgIxBsg0AT8QZqbqREBgYwc2ppNQCDNzdSIgEBGDm3NJiCQ5mZqREAgI4e2ZhMQSHMzNSIgkJFDW7MJCKS5mRoREMjIoa3ZBATS3EyNCAhk5NDWbAICaW6mRgQEMnJoazYBgTQ3UyMCAhk5tDWbgECam6kRAYGMHNqaTUAgzc3UiIBARg5tzSYgkOZmakRAICOHtmYTEEhzMzUiIJCRQ1uzCQikuZkaERDIyKGt2QQE0txMjQgIZOTQ1mwCAmlupkYEBDJyaGs2AYE0N1MjAgIZObQ1m4BAmpupEQGBjBzamk1AIM3N1IiAQEYObc0mIJDmZmpEQCAjh7ZmExBIczM1IiCQkUNbswkIpLmZGhEQyMihrdkEBNLcTI0ICGTk0NZsAgJpbqZGBAQycmhrNgGBNDdTIwICGTm0NZuAQJqbqREBgYwc2ppNQCDNzdSIgEBGDm3NJiCQ5mZqREAgI4e2ZhMQSHMzNSIgkJFDW7MJCKS5mRoREMjIoa3ZBATS3EyNCAhk5NDWbAICaW6mRgQEMnJoazYBgTQ3UyMCAhk5tDWbgECam6kRAYGMHNqaTUAgzc3UiIBARg5tzSYgkOZmakRAICOHtmYTEEhzMzUiIJCRQ1uzCQikuZkaERDIyKGt2QQE0txMjQgIZOTQ1mwCAmlupkYEBDJyaGs2AYE0N1MjAgIZObQ1m4BAmpupEQGBjBzamk1AIM3N1IiAQEYObc0mIJDmZmpEQCAjh7ZmExBIczM1IiCQkUNbswkIpLmZGhEQyMihrdkEBNLcTI0ICGTk0NZsAgJpbqZGBAQycmhrNgGBNDdTIwICGTm0NZuAQJqbqREBgYwc2ppNQCDNzdSIgEBGDm3NJiCQ5mZqREAgI4e2ZhMQSHMzNSIgkJFDW7MJCKS5mRoREMjIoa3ZBATS3EyNCAhk5NDWbAICaW6mRgQEMnJoazYBgTQ3UyMCAhk5tDWbgECam6kRAYGMHNqaTUAgzc3UiIBARg5tzSYgkOZmakRAICOHtmYTEEhzMzUiIJCRQ1uzCQikuZkaERDIyKGt2QQE0txMjQgIZOTQ1mwCAmlupkYEBDJyaGs2AYE0N1MjAgIZObQ1m4BAmpupEQGBjBzamk1AIM3N1IiAQEYObc0mIJDmZmpEQCAjh7ZmExBIczM1IiCQkUNbswkIpLmZGhEQyMihrdkEBNLcTI0ICGTk0NZsAgJpbqZGBAQycmhrNgGBNDdTIwICGTm0NZuAQJqbqREBgYwc2ppNQCDNzdSIgEBGDm3NJiCQ5mZqREAgI4e2ZhMQSHMzNSIgkJFDW7MJCKS5mRoREMjIoa3ZBATS3EyNCAhk5NDWbAICaW6mRgQEMnJoazYBgTQ3UyMCAhk5tDWbgECam6kRAYGMHNqaTUAgzc3UiIBARg5tzSYgkOZmakRAICOHtmYTEEhzMzUiIJCRQ1uzCQikuZkaERDIyKGt2QQE0txMjQgIZOTQ1mwCAmlupkYEBDJyaGs2AYE0N1MjAgIZObQ1m4BAmpupEQGBjBzamk1AIM3N1IiAQEYObc0mIJDmZmpEQCAjh7ZmExBIczM1IiCQkUNbswkIpLmZGhEQyMihrdkEBNLcTI0ICGTk0NZsAgJpbqZGBAQycmhrNgGBNDdTIwICGTm0NZuAQJqbqREBgYwc2ppNQCDNzdSIwAOn4Y9IyHT+ZAAAAABJRU5ErkJggg=="; }}
通过文件地址上传文件
1、webUtil工具类下载图片如下
public static void downloadImgByNet(String ServerfilePath,String filePath,String fileName){ try{ URL url = new URL(ServerfilePath); URLConnection conn = url.openConnection(); //设置超时间为3秒 conn.setConnectTimeout(3*1000); //防止屏蔽程序抓取而返回403错误 conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)"); //输出流 InputStream str = conn.getInputStream(); //控制流的大小为1k byte[] bs = new byte[1024]; //读取到的长度 int len = 0; //是否需要创建文件夹 File saveDir = new File(filePath); if(!saveDir.exists()){ saveDir.mkdir(); } File file = new File(saveDir+ File.separator+fileName); //实例输出一个对象 FileOutputStream out = new FileOutputStream(file); //循环判断,如果读取的个数b为空了,则is.read()方法返回-1,具体请参考InputStream的read(); while ((len = str.read(bs)) != -1) { //将对象写入到对应的文件中 out.write(bs, 0, len); } //刷新流 out.flush(); //关闭流 out.close(); str.close(); System.out.println("下载成功"); }catch (Exception e) { e.printStackTrace(); } }
2、上传图片接口
@Value("${uploadfile.fileLoadPath}") String fileLoadPath="E:\\test"; @RequestMapping(method = RequestMethod.POST, value = "/fileUpload") public void ChangeState(@RequestBody Map param, HttpServletRequest request, HttpServletResponse response){ String UploadfilePath=""; if (param.get("UploadfilePath")!=null){ UploadfilePath=param.get("UploadfilePath").toString(); } String fileName=""; if (param.get("fileName")!=null){ fileName=param.get("fileName").toString(); } WebUtil.downloadImgByNet(UploadfilePath,fileLoadPath,fileName); }
通过文件传入并存放服务器
@Value("${uploadfile.fileLoadPath}") String fileLoadPath="E:\\test"; /** * 文件的上传 * @param file * @return */ @RequestMapping(value = "/uploads",method = RequestMethod.POST) public void upload(@RequestParam("file") MultipartFile file, HttpServletResponse response) { // 判断文件是否为空 String path = fileLoadPath; HashMapmessage = new HashMap<>(); if (!file.isEmpty()) { try { // 文件保存路径 String filePath = path + "/" + file.getOriginalFilename(); if (!new File(filePath).exists()){ new File(filePath).mkdirs(); } // 转存文件 file.transferTo(new File(filePath)); message.put("status", filePath); } catch (Exception e) {// e.printStackTrace(); message.put("status", "error"); } } renderResult(response, message); }
上传并生成随即名
@Value("${uploadfile.fileLoadPath}") String fileLoadPath="E:\\test"; /** * 文件的上传 * @param file * @return */ @RequestMapping(value = "/upload",method = RequestMethod.POST) public void upload(@RequestParam("file") MultipartFile file, HttpServletResponse response) { // 判断文件是否为空 String path = fileLoadPath; HashMapmessage = new HashMap<>(); if (!file.isEmpty()) { try { // 文件保存路径// String filePath = path + "/" + file.getOriginalFilename(); String suffixName = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".")); //获取文件的后缀名 String filePath = path+"\\"+UUID.randomUUID().toString().replace("-","")+suffixName; //拼接 if (!new File(filePath).exists()){ new File(filePath).mkdirs(); } // 转存文件 file.transferTo(new File(filePath)); message.put("status", filePath); } catch (Exception e) {// e.printStackTrace(); message.put("status", "error"); } } renderResult(response, message); }
以base64编码上传文件
以下为base64的编码和解码的工具类
public class FileBase64Utils { /** * 本地文件(图片、excel等)转换成Base64字符串 * * @param file 接受的文件 */ public static String convertFileToBase64(MultipartFile file) { byte[] data = null; // 读取图片字节数组 try { InputStream in = file.getInputStream();// InputStream in = new FileInputStream(imgPath); System.out.println("文件大小(字节)=" + in.available()); data = new byte[in.available()]; in.read(data); in.close(); } catch (IOException e) { e.printStackTrace(); } // 对字节数组进行Base64编码,得到Base64编码的字符串 Base64.Decoder decoder = Base64.getDecoder(); Base64.Encoder encoder = Base64.getEncoder(); String base64Str = encoder.encodeToString(data); return base64Str; } /** * 将base64字符串,生成文件 */ public static File convertBase64ToFile(String fileBase64String, String filePath, String fileName) { BufferedOutputStream bos = null; FileOutputStream fos = null; File file = null; try { File dir = new File(filePath); if (!dir.exists() && dir.isDirectory()) {//判断文件目录是否存在 dir.mkdirs(); } Base64.Decoder decoder = Base64.getDecoder(); Base64.Encoder encoder = Base64.getEncoder();// BASE64Decoder decoder = new BASE64Decoder(); byte[] bfile = decoder.decode(fileBase64String); file = new File(filePath + File.separator + fileName); fos = new FileOutputStream(file); bos = new BufferedOutputStream(fos); bos.write(bfile); return file; } catch (Exception e) { e.printStackTrace(); return null; } finally { if (bos != null) { try { bos.close(); } catch (IOException e1) { e1.printStackTrace(); } } if (fos != null) { try { fos.close(); } catch (IOException e1) { e1.printStackTrace(); } } } }}
上传附件的接口如下
/** * 附件上传接口 * @param request * @param response * @param file 前端传来的附件 */ @RequestMapping(method = RequestMethod.POST, value = "/uploadFile") public void uploadFile(HttpServletRequest request, HttpServletResponse response, MultipartFile file){ Mapres = new HashMap (); try{ long start = System.currentTimeMillis(); //获取开始的时间 String filename = file.getOriginalFilename(); //获取文件名 String imgBase64Str = FileBase64Utils.convertFileToBase64(file); //使用base64对文件编码成字符串格式 System.out.println("Base64字符串length=" + imgBase64Str.length()); //得到编码后的长度// 如果文件不存在,则创建 if (!new File(ServerloadPath).exists()){ new File(ServerloadPath).mkdirs(); }// 重新将字符串解码为文件类型并上传 File file1 = FileBase64Utils.convertBase64ToFile(imgBase64Str, ServerloadPath, filename); assert file1 != null; String absolutePath = file1.getAbsolutePath();// 输入花费时间 System.out.println("duration:" + (System.currentTimeMillis() - start));// 返回存放地址 res.put("filePath", absolutePath); res.put("duration",System.currentTimeMillis() - start+"ms"); renderResult(response, res); }catch(Exception ex){ ex.printStackTrace(); } }
-
Java 文件上传
一:配置springBoot上传文件限制spring:servlet:multipart:max-file-size:100MB 单个文件大小max-request-size:1024
来源: Java 文件上传
世界新动态:机器学习-集成学习GBDT
如何压缩图片大小?简单的图片压缩方法分享
世界视点!一降再降!一汽丰田首款纯电SUV大促:优惠6万到手13.98万起
祈福者放生2.5万斤鲇鱼被追责:属外来物种 危害极大
合资燃油车危险了!比亚迪秦PLUS DM-i冠军版上市7天订单超3.2万
当前动态:促销“狂飙”结束 特斯拉Model Y全系已上涨2000元
微软进一步拥抱AI:Win11新功能“记住”用户常用窗口布局
世界热点!《分布式技术原理与算法解析》学习笔记Day14
环球最新:Django Cannot assign "A1": "B1" must be a "C1" instance.
把选择语句和重复语句视为块
营收创6年最大跌幅!苹果被曝裁员外包员工 库克最后手段?
时隔3年半漫威重返内地!《蚁人与黄蜂女:量子狂潮》今日上映
天天热头条丨《星际争霸2》世界冠军李培楠回国:黄旭东等为其接风
当前视讯!三亚3米长搁浅抹香鲸救治无效不幸死亡:或被鲨鱼咬伤
全球看热讯:干货分享丨店长管理的五大核心你抓住了吗!
当前要闻:没买车的等等党们:赢了
每日看点!男子购买1200元年货32天快递仍未送达 邮政客服:车还在路上
每日动态!注意!特斯拉宣布召回超36万辆车 会突然停车发生车祸:马斯克火速回应
环球新动态:iPadOS 16:拖后腿了
读Java实战(第二版)笔记12_重构、测试和调试
【环球报资讯】2023开年火药味儿十足 “大内存”机型卷出了新高度
今日播报!期末复习——同步、互斥、死锁
男子卖出游戏账号后3次恶意找回 为何被判盗窃而不是诈骗?
世界热推荐:一年节省185亿度电!中车研制复合材料“超级铜”登上央视
魔兽国服重开遥遥无期 消息称暴雪找不到接盘方:能谈的都试了
每日播报!我想知道知乎现在是怎么了?
女子询问换杯 却被奈雪店员辱骂:拒绝出面道歉
即时看!70城新房价格指数时隔12个月首次止跌
全球观天下!苹果7喇叭灰尘怎么清理 苹果7喇叭灰尘清理的方法
世界微资讯!汉诺塔
观察:真正“搞”懂HTTPS协议19之HTTPS优化
pnpm的基本原理及快速使用
环球焦点!Windows 环境下安装与配置 Node.js
fusion app远程公告(微云)
全球微动态丨北京多个地铁口有人扫码送“大鹅”:小心隐私泄露
游戏《如龙7外传》夜店真人女郎上新:一大波日本纯美小姐姐
二叉树中某一值的路径之 先序遍历 + 二叉搜索树转化为循环双向链表 之 中序遍历
全球快播:设计模式(八)----创建型模式之建造者模式与工厂模式区别
【全球热闻】真实项目开发中高并发实战经验总结
环球讯息:Python 爬虫方法总结
刘德华剧透《流浪地球3》:"数字生命"延续
重点聚焦!被苹果踢出果链后淡化手机业务?欧菲光回应:指纹识别还是龙头地位
天天微头条丨Vue急速入门-3
Python多任务教程
每日短讯:数据结构刷题2023.02.16小记
全球今日讯!Xcode Swift自动格式化
环球观天下!反结账的钱退到哪里_反结账快捷键
豪掷7500万!ChatGPT开发商OpenAI买下极品域名AI.com
环球聚焦:为了搞死《霍格沃茨之遗》“黑巫师”们用尽了魔法
每日动态!【2023.02.16】威佐夫博弈详解
今日热闻!女子丽江60元买2串烧烤仅6只虫2只蝎 景区回应其吐槽:特色小吃贵
精准发力“二次元”群体:盈通推出“樱瞳水着”RTX 4080显卡
当前快讯:女子吃饭后疯狂打嗝 医生:赶紧转急诊
环球热推荐:全球只有18块!极品飞车特别版RTX 4090现身海鲜市场:要价1.6万
python处理xml文件
天天时讯:因衣服长时间放购物车被客服嘲讽 还被拉黑:遭无数网友吐槽
【热闻】交个朋友公司被曝欠薪、恶意裁员 罗永浩回应:第一时间协调妥善解决
每日快看:1099元 微星PRO MP161便携式显示屏来了:15.6寸IPS屏 仅重0.75kg
高速路上一觉醒来车在冒烟无人驾驶:副驾小伙慌忙跳车逃生
世界时讯:联想拯救者Y9000P 2023游戏本性能狂飙:满血RTX 4090、240Hz高刷
江西芦溪:田园春意浓 乡村美如画
记录--TS类型写不好?一起来训练提升吧!
判断一个给定数组是否为二叉搜索树后序遍历
防患未然 | AIRIOT城市管廊智能运维解决方案
全球今亮点!xcodebuild命令行工具使用详解
今日热文:欧洲2035禁售燃油车!专家:电动车难完全取代燃油车
环球焦点!Wind11新预览版25300发布:实时字幕对中国用户更加友好!
当前时讯:新日登北京电动自行车不合格“黑榜”:多批电池管理系统有问题
新消息丨不愧是玩无人机的 大疆车载产品矩阵揭秘:高阶辅助只需摄像头
这合理吗?公厕免费取纸先关注微信公众号
快资讯丨pip设置镜像
天天头条:String详解
世界时讯:开心档之Swift 访问控制
计算机导论学习记录(二)
全球微头条丨8个让你收入翻倍的高质量免费网站
重点聚焦!大疆Inspire 3无人机来了:配全画幅X9相机、可录8K视频
全球速递!用了电信5G 浙大完成中国首例5G超远程机器人肝胆手术:跨越近万里
总投资389亿!2023年第一条高铁获批:沿海超级通道定了
全球速讯:消息称腾讯XR团队全线解散:成立不到1年!
鄱阳湖旗舰店麻辣小龙虾官方大促:1.4 斤29.9元到手
深交所向新亚制程发出关注函
全球看点:USRP-2974上安装Ubuntu20.04 + UHD 3.15 + GNU Radio 3.8 过程全记录
VOP 消息仓库演进之路|如何设计一个亿级企业消息平台
【热闻】【管理您的整个软件供应链】上海道宁与Sonatype助力您以更安全的开源更快地交付产品
快看点丨西部数据推出22TB/44TB My Book桌面硬盘 售价高达1500美元
曝光交个朋友欠薪 当事人最新回应:罗永浩正积极联系公司解决
果粉买不?苹果折叠屏会先拿iPad试水!折叠iPhone风险太高了
当前热讯:想要过目不忘?进来学两招、保证不后悔!
世界热资讯!12.4万买帕纳梅拉梦碎 首单车主:保时捷傲慢 100万都不卖
环球视讯!OpenYurt v1.2 亮点速览丨云边流量峰值相比原生 K8s 降低 90%
全球百事通!堆叠柱状图怎么用?速戳!
火山引擎数智平台的这款产品,正在帮助 APP 提升用户活跃度
模型预处理层介绍(3) - IntegerLookup
CC1打不通时的另外一条链CC3
天天通讯!襄阳市消防救援训练与战勤保障大队成立
吴刚谈儿子出演《狂飙》高晓晨:既然选择这条路就要自己走
世界即时:尼泊尔载72人客机失事坠毁 初步调查报告:螺旋桨顺桨失去推力
环球信息:2023年铁路春运圆满收官:累计发送旅客3.48亿人次 增长37.4%
【天天速看料】博主分享特斯拉Model 3P一年使用成本:每公里不到4毛