Download file_api.php from xiaozhian/MoeNote: direct link, hf CLI and curl.
- Browser
- Download file 3.98 kB
-
https://huggingface.co/spaces/xiaozhian/MoeNote/resolve/main/file_api.php
- Command line
-
hf download hf://spaces/xiaozhian/MoeNote/file_api.php
-
curl -L -o file_api.php https://huggingface.co/spaces/xiaozhian/MoeNote/resolve/main/file_api.php
3.98 kB
| header('Content-Type: application/json'); | |
| require_once 'settings.php'; | |
| require_once 'FileShare.php'; | |
| $fileShare = new FileShare(); | |
| try { | |
| if ($_SERVER['REQUEST_METHOD'] === 'POST') { | |
| // 处理上传 | |
| $data = [ | |
| 'expire_time' => $_POST['expire_time'] ?? 86400, | |
| 'max_downloads' => $_POST['max_downloads'] ?? 0 | |
| ]; | |
| if (isset($_FILES['file']) || isset($_POST['content'])) { | |
| if (isset($_POST['content'])) { | |
| $data['content'] = $_POST['content']; | |
| } | |
| $code = $fileShare->save($data); | |
| echo json_encode([ | |
| 'status' => 'success', | |
| 'code' => $code | |
| ]); | |
| } else { | |
| throw new Exception('未收到文件或文本内容'); | |
| } | |
| } else if ($_SERVER['REQUEST_METHOD'] === 'GET') { | |
| // 处理下载/获取 | |
| if (isset($_GET['download'])) { | |
| $code = $_GET['download']; | |
| $file = $fileShare->get($code); | |
| if (!$file || $file['type'] !== 'file') { | |
| throw new Exception('文件不存在或已过期'); | |
| } | |
| // 获取文件 MIME 类型 | |
| $finfo = finfo_open(FILEINFO_MIME_TYPE); | |
| $mime_type = finfo_file($finfo, $file['filepath']); | |
| finfo_close($finfo); | |
| // 清除之前的输出缓冲和头信息 | |
| ob_clean(); | |
| header('Content-Type: ' . $mime_type); | |
| header('Content-Transfer-Encoding: binary'); | |
| header('Content-Disposition: attachment; filename="' . rawurlencode($file['filename']) . '"'); | |
| header('Content-Length: ' . filesize($file['filepath'])); | |
| header('Accept-Ranges: bytes'); | |
| // 处理断点续传 | |
| if (isset($_SERVER['HTTP_RANGE'])) { | |
| list($start, $end) = sscanf($_SERVER['HTTP_RANGE'], 'bytes=%d-%d'); | |
| $filesize = filesize($file['filepath']); | |
| if (!isset($end)) { | |
| $end = $filesize - 1; | |
| } | |
| $length = $end - $start + 1; | |
| header('HTTP/1.1 206 Partial Content'); | |
| header("Content-Range: bytes $start-$end/$filesize"); | |
| header('Content-Length: ' . $length); | |
| $fp = fopen($file['filepath'], 'rb'); | |
| fseek($fp, $start); | |
| $buffer = 1024 * 8; | |
| while ($length > 0) { | |
| $read = min($buffer, $length); | |
| echo fread($fp, $read); | |
| flush(); | |
| $length -= $read; | |
| } | |
| fclose($fp); | |
| } else { | |
| readfile($file['filepath']); | |
| } | |
| exit; | |
| } else { | |
| $code = $_GET['code'] ?? null; | |
| if (!$code) { | |
| throw new Exception('未提供提取码'); | |
| } | |
| $file = $fileShare->get($code); | |
| if (!$file) { | |
| throw new Exception('文件不存在或已过期'); | |
| } | |
| // 返回文件信息或文本内容 | |
| echo json_encode([ | |
| 'status' => 'success', | |
| 'type' => $file['type'], | |
| 'content' => $file['content'], | |
| 'filename' => $file['filename'], | |
| 'current_downloads' => $file['current_downloads'], | |
| 'max_downloads' => $file['max_downloads'], | |
| 'expires_at' => $file['expires_at'], | |
| 'expires_at_formatted' => date('Y-m-d H:i:s', $file['expires_at']) // 添加格式化的时间 | |
| ]); | |
| } | |
| } | |
| } catch (Exception $e) { | |
| http_response_code(400); | |
| echo json_encode([ | |
| 'status' => 'error', | |
| 'message' => $e->getMessage() | |
| ]); | |
| } | |