开源阅读自建书源直链接口
在使用开源阅读时,稳定的书源直链能极大提升阅读体验。本文将分享一套自建书源直链接口的实现方案,包括后端代码与前端配置,帮助你搭建属于自己的永久直链服务。
一、后端接口实现(PHP)
以下是实现直链上传功能的核心代码,命名为upload.php 需要自己创建一个名为uploads的文件夹来存放书源 代码主要负责处理文件上传、验证文件类型并返回直链地址:
<?php
// 允许跨域
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Methods: POST");
header("Access-Control-Allow-Headers: Content-Type");
// 明确返回 JSON 格式
header("Content-Type: application/json; charset=utf-8");
// 定义允许的文本 MIME 类型和扩展名
$allowedMimeTypes = [
'text/plain',
'text/html',
'text/css',
'text/javascript',
'application/json',
'application/xml',
'text/markdown'
];
$allowedExtensions = ['txt', 'html', 'htm', 'css', 'js', 'json', 'xml', 'md'];
// 上传目录
$uploadDir = __DIR__ . '/uploads/';
if (!is_dir($uploadDir)) {
mkdir($uploadDir, 0755, true);
}
// 初始化返回数据
$response = ['data' => ''];
// 处理 POST 上传请求
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_FILES['file'])) {
$file = $_FILES['file'];
$fileError = $file['error'];
// 检查文件上传错误
if ($fileError !== UPLOAD_ERR_OK) {
http_response_code(400);
echo json_encode($response);
exit;
}
// 获取文件扩展名和 MIME 类型
$fileExt = strtolower(pathinfo($file['name'], PATHINFO_EXTENSION));
$fileMime = mime_content_type($file['tmp_name']);
// 验证文件类型
if (!in_array($fileExt, $allowedExtensions) || !in_array($fileMime, $allowedMimeTypes)) {
http_response_code(403);
echo json_encode($response);
exit;
}
// 生成唯一文件名
$filename = uniqid() . '.' . $fileExt;
$targetPath = $uploadDir . $filename;
// 移动上传文件并返回链接
if (move_uploaded_file($file['tmp_name'], $targetPath)) {
// 给 data 字段赋值相对路径
$response['data'] = '/uploads/' . $filename;
}
}
// 输出 JSON 结果
echo json_encode($response);
?>代码说明:
- 支持跨域请求,兼容开源阅读客户端的调用需求
- 限制仅允许文本类文件上传(如TXT、HTML、JSON等),保障服务器安全
- 自动创建上传目录,生成唯一文件名避免冲突
- 以JSON格式返回上传结果,便于客户端解析
二、开源阅读客户端配置
将以下配置添加到开源阅读的「直链上传配置」中,即可对接上述后端接口:
其他设置➡️直链上传规则➡️粘贴规则
{
"compress": false,
"downloadUrlRule": "$.data@js:if (result == '') \n '' \n else \n 'https://你的域名' + result",
"summary": "自建永久直链",
"uploadUrl": "https://你的域名/upload.php,{\"method\":\"POST\",\"body\": {\"file\": \"fileRequest\"},\"type\": \"multipart/form-data\"}"
}配置说明:
- uploadUrl:填写你的后端接口地址
- downloadUrlRule:用于拼接完整的文件访问地址,将
你的域名替换为你的域名即可 - compress:设置为false表示不压缩上传文件
三、部署注意事项
- 确保服务器开启PHP环境,并赋予uploads目录可写权限
- 若使用HTTPS,需配置好SSL证书
- 可根据需求扩展allowedExtensions数组,增加支持的文件类型
- 建议定期清理uploads目录,避免存储占用过大
通过以上步骤,你就拥有了一个稳定的开源阅读书源直链服务,无需依赖第三方平台,数据安全性和访问速度都能得到保障
