2023-01-18
其他
00
请注意,本文编写于 599 天前,最后修改于 110 天前,其中某些信息可能已经过时。

目录

一、本地jar包
1、idea创建SpringBoot空项目,可以不勾选任何依赖
2、pom.xml配置,导入hutool包。(直接使用我的)
3、创建类TyporaUploadFile,mian方法使用hutool上传到服务器接口
4、编译jar包配置
5、编译
6、编辑后jar包,放到自己常用位置
二、服务器上传文件接口
1、config配置与本地文件映射
2、Controller编写上传接口
3、application.yml配置
4、完整项目
三、Typora配置
四、完整项目已上传到gitee中,欢迎大家使用

日常使用Typora写博客,遇到图片需要手动上传的服务器映射,Typora软件新版本支持自定义上传到图床本篇记录上传到本人服务器中。

实现步骤(java实现):

1、Typora使用Custom Command,请求到本地jar包main方法中,请求参数为本地图片路径

2、jar包拿到本地图片路径,请求服务器上传文件接口

3、服务器存储,并且返回url映射地址

话不多说,直接撸代码~~~

一、本地jar包

1、idea创建SpringBoot空项目,可以不勾选任何依赖

image-20230117183906997

2、pom.xml配置,导入hutool包。(直接使用我的)

<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-logging</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- https://mvnrepository.com/artifact/cn.hutool/hutool-all --> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.3.10</version> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.12.0</version> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> </dependencies>

3、创建类TyporaUploadFile,mian方法使用hutool上传到服务器接口

import cn.hutool.core.io.FileUtil; import cn.hutool.http.HttpUtil; import java.util.Arrays; import java.util.HashMap; /** * @author Chen Shaohua * @date 2023/1/17 15:44 */ public class TyporaUploadFile { public static void main(String[] args) { System.out.println("本地文件:" + Arrays.toString(args)); if (args.length == 0) return; for (String filePath : args) { HashMap<String, Object> paramMap = new HashMap<>(); paramMap.put("file", FileUtil.file(filePath)); String post = HttpUtil.post("Http://服务器地址:8090/file/saveFile", paramMap); System.out.println(post); } } }

4、编译jar包配置

右上角File -> Project Structure

image-20230117184435403


Artifacts - > 右边+号 -> 选择第二个

image-20230117184636190

编译设置,选择后点ok

image-20230117185149811

设置完成如下

image-20230117185229931

5、编译

最上方菜单栏点击,build -> build Artifacts -> 如图下 -> build

image-20230117185427395

6、编辑后jar包,放到自己常用位置

image-20230117185503328

二、服务器上传文件接口

1、config配置与本地文件映射

地址为需要和本地那个文件夹配置映射,不懂百度有详解

注:必须以/结尾,否则上传文件完成后,url访问不到,404

image-20230117185825760

package com.example.aliyuntest.config; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.CorsRegistry; import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; @Configuration public class WebConfig implements WebMvcConfigurer { //跨域配置,前端和后端端口不一样 @Override public void addCorsMappings(CorsRegistry registry) { //8080前端使用的端口号 registry.addMapping("/**"); } @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/file/**").addResourceLocations("file:/myData/testPro/fileTemp/"); } }

2、Controller编写上传接口

package com.example.aliyuntest.controller; import cn.hutool.core.date.DatePattern; import cn.hutool.core.date.DateUtil; import cn.hutool.core.io.FileUtil; import cn.hutool.json.JSONObject; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.CrossOrigin; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest; import java.io.File; /** * @author Chen Shaohua * @date 2022/11/15 16:53 */ @RestController @RequestMapping("/file") @CrossOrigin @Slf4j public class FileController { @RequestMapping(value = "/saveFile") public String paddleOcr(MultipartFile file, HttpServletRequest request) { if (file ==null || file.isEmpty()) { return "文件为空!"; } String url = "http://服务器地址:" + request.getLocalPort() + "/file/"; try { String name = file.getOriginalFilename(); //获取主文件名 文件后缀 String suffix = FileUtil.getSuffix(name); //文件名称为日期时间简写,如:20230117190235 年月日时分秒 String fileName = DateUtil.format(DateUtil.date(), DatePattern.PURE_DATETIME_PATTERN) + "." + suffix; //一般情况为 年 月 项目名 String fileNamePath = DateUtil.format(DateUtil.date(), "yyyy/MM/")+ fileName;; //创建父文件夹,不存在创建 FileUtil.mkdir("/myData/testPro/fileTemp/" + fileNamePath + fileName); //创建文件 File newFile = new File("/myData/testPro/fileTemp/" + fileNamePath + fileName); //写入文件 file.transferTo(newFile); //返回url地址 return url + fileNamePath; } catch (Exception e) { log.info("保存文件异常!", e); return "保存文件异常!" + e.getMessage(); } } }

3、application.yml配置

server: port: 8090 spring: servlet: multipart: enabled: true max-file-size: 10240MB #最大文件size max-request-size: 10240MB #每次请求最大size logging: file: name: ./log/logs.log

4、完整项目

image-20230117191519076

三、Typora配置

打开左上角设置 -> 偏好设置,如图下

命令行代码执行本地jar包的main方法,本地必须配置环境变量(百度一大堆)

java -jar jar包放置位置 ...文件路径(可配多个)

image-20230117183350017


点击验证图片上传选项测试

image-20230117191014242


编写时上传

截屏 -> 粘贴图片 -> 右击图片点击上传

四、完整项目已上传到gitee中,欢迎大家使用

配置文件映射路径已做动态配置

完整代码地址gitee

本文作者:酷少少

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!