Home
avatar

𝓪𝓲𝓵𝓶𝓮𝓵

开源阅读自建书源直链接口

在使用开源阅读时,稳定的书源直链能极大提升阅读体验。本文将分享一套自建书源直链接口的实现方案,包括后端代码与前端配置,帮助你搭建属于自己的永久直链服务。

一、后端接口实现(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);
?>

代码说明:

  1. 支持跨域请求,兼容开源阅读客户端的调用需求
  2. 限制仅允许文本类文件上传(如TXT、HTML、JSON等),保障服务器安全
  3. 自动创建上传目录,生成唯一文件名避免冲突
  4. 以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表示不压缩上传文件

三、部署注意事项

  1. 确保服务器开启PHP环境,并赋予uploads目录可写权限
  2. 若使用HTTPS,需配置好SSL证书
  3. 可根据需求扩展allowedMimeTypesallowedMimeTypes和allowedExtensions数组,增加支持的文件类型
  4. 建议定期清理uploads目录,避免存储占用过大

通过以上步骤,你就拥有了一个稳定的开源阅读书源直链服务,无需依赖第三方平台,数据安全性和访问速度都能得到保障

开源阅读 书源 php