|
|
@@ -418,7 +418,7 @@ class AuthController
|
|
|
return app('json')->fail('未授权');
|
|
|
}
|
|
|
/**
|
|
|
- * 处理包含gzip压缩内容的txt文件,解压拼接后下载
|
|
|
+ * 处理包含gzip压缩内容的txt文件,解压拼接后保存到public目录并触发下载
|
|
|
* @param Request $request
|
|
|
* @return \think\response\Stream|mixed
|
|
|
*/
|
|
|
@@ -431,15 +431,15 @@ class AuthController
|
|
|
}
|
|
|
|
|
|
// 验证文件类型
|
|
|
- try {
|
|
|
- $file->validate(['ext' => 'txt']);
|
|
|
+// try {
|
|
|
+// $file->validate(['ext' => 'txt']);
|
|
|
$info = $file->move(ROOT_PATH . 'runtime/temp');
|
|
|
- if (!$info) {
|
|
|
- return app('json')->fail('文件上传失败: ' . $file->getError());
|
|
|
- }
|
|
|
- } catch (\Exception $e) {
|
|
|
- return app('json')->fail('文件验证失败: ' . $e->getMessage());
|
|
|
- }
|
|
|
+// if (!$info) {
|
|
|
+// return app('json')->fail('文件上传失败: ' . $file->getError());
|
|
|
+// }
|
|
|
+// } catch (\Exception $e) {
|
|
|
+// return app('json')->fail('文件验证失败: ' . $e->getMessage());
|
|
|
+// }
|
|
|
|
|
|
// 读取文件内容
|
|
|
$filePath = $info->getRealPath();
|
|
|
@@ -476,16 +476,26 @@ class AuthController
|
|
|
return app('json')->fail('未解析到有效内容');
|
|
|
}
|
|
|
|
|
|
- // 生成临时文件
|
|
|
- $tempFileName = 'decoded_' . time() . '.txt';
|
|
|
- $tempFilePath = sys_get_temp_dir() . DIRECTORY_SEPARATOR . $tempFileName;
|
|
|
- file_put_contents($tempFilePath, $decodedContent);
|
|
|
+ // 定义保存目录(public/downloads)
|
|
|
+ $saveDir = ROOT_PATH . 'public' . DIRECTORY_SEPARATOR . 'downloads';
|
|
|
+ // 自动创建目录(如果不存在)
|
|
|
+ if (!is_dir($saveDir)) {
|
|
|
+ mkdir($saveDir, 0755, true); // 0755权限,允许读写执行
|
|
|
+ }
|
|
|
+
|
|
|
+ // 生成唯一文件名(避免重名)
|
|
|
+ $fileName = 'decoded_' . date('YmdHis') . '_' . uniqid() . '.txt';
|
|
|
+ $savePath = $saveDir . DIRECTORY_SEPARATOR . $fileName;
|
|
|
+
|
|
|
+ // 保存文件到public目录
|
|
|
+ if (!file_put_contents($savePath, $decodedContent)) {
|
|
|
+ return app('json')->fail('文件保存失败,请检查public目录权限');
|
|
|
+ }
|
|
|
|
|
|
- // 触发下载并自动清理临时文件
|
|
|
+ // 触发浏览器下载(同时保留本地文件)
|
|
|
return response()
|
|
|
- ->file($tempFilePath)
|
|
|
+ ->file($savePath)
|
|
|
->header('Content-Type', 'text/plain')
|
|
|
- ->header('Content-Disposition', 'attachment; filename="' . $tempFileName . '"');
|
|
|
-// ->autoDelete($tempFilePath);
|
|
|
+ ->header('Content-Disposition', 'attachment; filename="' . $fileName . '"');
|
|
|
}
|
|
|
}
|