GithubHelp home page GithubHelp logo

dcat-vue's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

dcat-vue's Issues

放行权限有点问题,非admin账号请求上传token会失败,后台设置会报错。最后就是七牛三方扩展

1.放行权限,建议使用插件标准写法,如下

//vendor/weiwait/dcat-vue/src/DcatVueServiceProvider.php 添加放行路由配置
    protected $exceptRoutes = [
        'permission' => ['weiwait*'],
        'auth' => ['weiwait*']
    ];

2.后台扩展-设置报错(上次我提pr你放弃合并那个)

//vendor/weiwait/dcat-vue/src/Setting.php 增加 use
use Weiwait\DcatVue\Models\FilesystemConfig;

3.Dcat-Admin 文档推荐用 zgldh/qiniu-laravel-storage(所以我觉得大部分人会加载这个扩展,种种原因[比如别地方使用了,估计不好彻底放弃]),所以建议咱们也用这个扩展。

文件名称,可以实现用文件的md5存储吗?

虽然前端计算有点耗费用户电脑,但是如果有这个,配合作者设计的 uploads表,可以实现秒传。计算完md5先请求接口看是否存在,如果存在直接返回,不存在则继续走后续上传逻辑。
就算不实现秒传,这样传oss的时候应该也会覆盖原来相同的文件不会产生多余的重复文件到存储里

使用该扩展上传文件到七牛会自动删除文件,但我没找到原因,大佬辛苦看看

首先,我已经注释掉插件里的删除方法的调用

<?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%,当然使用者不是我,询问使用者,他也没特殊操作就是上传发布。。。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.