利用uPic+服务器为自己搭建一个私用图床
文章最后更新时间为:2021 年 02 月 26 日 22:49:20
考虑到Typecho原生的图片上传不太方便,而Mac下用uPic并配合快捷键上传图片效率很高。所以这篇文章介绍如何利用自己的服务器为uPic搭建一个上传图片的接口。
uPic利用POST请求向服务器中上传图片,所以我们只要写一个能处理文件上传的POST的网站接口即可。
首先在网站根目录创建文件夹upload
,然后在upload
里创建index.php
,并在该文件里写入以下代码:
<?php
if(!isset($_POST["verification"]) || !isset($_POST["pic_name"]) || !isset($_SERVER["HTTP_TOKEN"])) exit;
if($_POST["verification"] != "upic_custom") exit;
if($_SERVER["HTTP_TOKEN"] != token) exit;
move_uploaded_file($_FILES["file"]["tmp_name"], "uPic/" . $_POST['pic_name']);
header('Content-Type:application/json; charset=utf-8');
$arr = array('url'=>'your_website_url/upload/uPic/' . $_POST['pic_name']);
exit(json_encode($arr));
?>
token
为你自己设置的密钥,your_website_url
为你网站的网址(对我而言,your_website_url
为https://vixbob.moe
)。
PS:uPic
文件夹要事先手动创建,否则会报错。
uPic图床配置如下图:
PS:your_website_url
含义同上,保存路径:{year}{month}{day}{hour}{minute}{since_second}{since_millisecond}{second}{random}{.suffix}
。
其他字段配置如下图:
PS:pic_name
中填{year}{month}{day}{hour}{minute}{since_second}{since_millisecond}{second}{random}{.suffix}
,token_
为你设置的密钥。
踩过的坑
- 请求头中的
Content-Type
一定要设为multipart/form-data; charset=utf-8;
,否则服务端无法处理这个数据。 - 接口要返回包含图片地址的
JSON
文件,因为uPic
是从这个文件里读取数据的。