|
|
@@ -419,7 +419,7 @@ class AuthController
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 处理包含gzip压缩内容的txt文件,解压后仅保存到public目录
|
|
|
+ * 处理包含gzip压缩内容的txt文件,解压后按块添加章节标识并保存到public目录
|
|
|
* @param Request $request
|
|
|
* @return mixed
|
|
|
*/
|
|
|
@@ -460,26 +460,33 @@ class AuthController
|
|
|
return app('json')->fail('上传的文件内容为空');
|
|
|
}
|
|
|
|
|
|
- // 处理压缩内容
|
|
|
+ // 按双引号分割内容块
|
|
|
$parts = explode('"', $content);
|
|
|
$decodedContent = '';
|
|
|
- $zj = 1;
|
|
|
+ $chapter = 1; // 章节号从1开始
|
|
|
+
|
|
|
+ // 处理每个压缩部分,添加章节标识
|
|
|
foreach ($parts as $part) {
|
|
|
- $zhangjie = ' 第'.$zj.'章';
|
|
|
$part = trim($part);
|
|
|
- if (empty($part)) continue;
|
|
|
+ if (empty($part)) {
|
|
|
+ continue; // 跳过空内容块
|
|
|
+ }
|
|
|
|
|
|
+ // Base64解码
|
|
|
$decoded = base64_decode($part);
|
|
|
if ($decoded === false) {
|
|
|
return app('json')->fail('Base64解码失败,检查文件格式');
|
|
|
}
|
|
|
|
|
|
+ // gzip解压
|
|
|
$uncompressed = gzdecode($decoded);
|
|
|
if ($uncompressed === false) {
|
|
|
return app('json')->fail('gzip解压失败,检查压缩内容');
|
|
|
}
|
|
|
- $decodedContent .= $zj;
|
|
|
- $decodedContent .= $uncompressed;
|
|
|
+
|
|
|
+ // 添加章节标识(第x章)+ 换行 + 内容块 + 换行(分隔章节)
|
|
|
+ $decodedContent .= "第{$chapter}章" . PHP_EOL . $uncompressed . PHP_EOL . PHP_EOL;
|
|
|
+ $chapter++; // 章节号递增
|
|
|
}
|
|
|
|
|
|
if (empty($decodedContent)) {
|
|
|
@@ -500,11 +507,11 @@ class AuthController
|
|
|
return app('json')->fail('文件保存失败,请检查public目录权限');
|
|
|
}
|
|
|
|
|
|
- // 仅返回保存成功的信息(无下载功能)
|
|
|
+ // 返回保存成功信息
|
|
|
return app('json')->success([
|
|
|
- 'message' => '文件已成功保存到public目录',
|
|
|
- 'local_path' => $savePath, // 服务器本地保存路径
|
|
|
- 'access_url' => '/downloads/' . $fileName // 网页访问路径(需确保public为根目录)
|
|
|
+ 'message' => '文件已成功添加章节标识并保存',
|
|
|
+ 'local_path' => $savePath,
|
|
|
+ 'access_url' => '/downloads/' . $fileName
|
|
|
]);
|
|
|
}
|
|
|
}
|