本地markdown文件 Typora 导入csdn 图片上传
一、概述
很多人喜欢用线上博客例如csdn当作日常笔记来写,但是在无网络状况下或者时间紧张等状况下,可能用线上博客就不是那么的方便。所以我的基本操作大多数是在日常开发过程中,有需要记录的东西先用本地md文件记录一下,等到有时间再整理好并导入各个博客中。
推荐一款本地markdown撰写工具:Typora
是一款轻便简洁的Markdown编辑器,支持即时渲染技术,这也是与其他Markdown编辑器最显著的区别
二、问题
其实md文件迁移没什么太大问题,markdown的行文规范都是通用的,直接复制本地的md文件内容,粘贴到博客网站就可以了。但是如果你的笔记中包含图片,而且是存在本地的图片(网络图片如果不支持外链,也不可以直接迁移)是无法在博客中显示的,所以为了解决这种常见问题,就需要我们自己手动上传每张图片到博客的图床,然后再一一替换,发布。
上述解决方式需要人工操作,而且如果图片过多,那我们要累死了,所以下面我使用java去完成这一系列操作
三、解决
以csdn为例:
- 首先我们打开csdn的写博客(markdown),点击上传图片,观察请求的内容:
-
由上图可以知道,csdn的图片上传是有规律可循的,所以就可以只用代码来实现这个上传操作
-
首先我们清楚观察到了上面的一个请求,但是要知道需要用到的是哪些东西
需要用到的是:
- 上传图片使用的url:https://mp.csdn.net/UploadImage
- 请求的方式:post
- 请求的普通参数:shuiyin=2
- 请求的ContentType:multipart/form-data;
- 请求上传的文件参数名:file
- 请求的headers:需要用到的只有cookie,这里面的内容有用户登录之后保存在浏览器的一些信息,如果没有这些cookie,是没有权限去上传图片的
实现需要用到的技术:
- 编程语言:java、有没有spring或者springboot都可,我这里只做了一个普通的demo
- 工具:maven、idea
四、代码
1、maven引入包
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.8.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.zhiyou</groupId>
<artifactId>springboot-httpclient-demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>springboot-httpclient-demo</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/org.jsoup/jsoup -->
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.12.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/redis.clients/jedis -->
<!-- https://mvnrepository.com/artifact/redis.clients/jedis -->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.1.0</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.60</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpasyncclient</artifactId>
<version>4.1.3</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpmime</artifactId>
<version>4.5.10</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.7</version>
</dependency>
<!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.6</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build<