dcat-vue
dcat-vue copied to clipboard
使用该扩展上传文件到七牛会自动删除文件,但我没找到原因,大佬辛苦看看
首先,我已经注释掉插件里的删除方法的调用
<?php
namespace Ieras\DcatVue\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\Storage;
class WeiwaitUpload extends Model
{
protected $table = 'uploads';
protected $fillable = [
'name'
];
public static function clearUnusedFiles()
{
self::query()->where('created_at', '<', now()->subDay())
->get()
->map(function (self $file) {
$file->delete();
Storage::disk($file->disk)->delete($file->name);
});
}
}
//调用的地方
public function uploaded(Request $request)
{
//WeiwaitUpload::clearUnusedFiles();
WeiwaitUpload::query()
->insert(array_map(fn($item) => ['name' => $item, 'created_at' => now(), 'disk' => $request['disk']],
(array)$request['files']
));
return Storage::disk($request['disk'])->url($request['files']);
}
感觉最大的可能就是下面这里了
protected function prepareInputValue($file)
{
WeiwaitUpload::query()->whereIn('name', (array) $file)->delete();
return parent::prepareInputValue($file);
}
不过呢,数据里的记录没被删,只是七牛的文件被删了,所以感觉也很奇怪,又不像上面这里。 我本机测试的时候并没复现出来,尽管我各种尝试、比如裁剪、删除、重置、换图等。。。 这情况发生在服务器端(并且我登录服务器看了,那个删除代码确实是注释状态),而且被删就在上传完成后的第36秒。 我的后台表单,存储着玩着的图片路径(我觉得可以排出是用户自己删的,而且我测试点击表单的删除并不会删七牛那的文件) 。。。 希望大佬帮忙看看原因,实在找不到为啥了。 我让七牛给调用删除记录了(删除ip确实来自于我的服务器,发生在上传完后的第36秒) 上传完成时间(weiwait_upload表记录的):2023-01-31 10:38:33 (可以百分百确定上传成功了,因为文件还能访问,当然是七牛的cdn缓存) 七牛给的删除日志时间:{"op":"delete","fh":"C5YEHAMQEWkOBUtbFgAAAAAAC8avNnM9ieVrtXXNP9bjibfjz9PwNNAAAADwgtHYac5VAAAA","ip":"ip我手动隐藏","mimeType":"image/png","ua":"QiniuPHP/7.7.0 (Linux/x86_64) PHP/8.1.13","bucket":"file-xxxx","uid":1382807647,"fwd":"211.0.0.0(ip我手动隐藏)","xl":"h0UAAAAShkhcRD8X","fsize":1465163,"machine":"wz41","putTime":16751327136625344,"delTime":"2023-01-31T02:39:09.566642Z","id":"8jr0sa:images/1ec9b4ebcba390f2d231caa2b1a56b61.png","region":"cn-east-2","_time":1675135906678,"hash":"FgvGrzZzPYnla7V1zT_W44m348_T"} 日志可以看出是2023-01-31T02:39:09.566642Z(+8时区)删除的,前后差了36秒
这个情况在服务端发生概率90%,当然使用者不是我,询问使用者,他也没特殊操作就是上传发布。。。