如何在 api laravel 8 中跟踪文件的上传大小

Posted

技术标签:

【中文标题】如何在 api laravel 8 中跟踪文件的上传大小【英文标题】:How to track the uploaded size of a file in api laravel 8 【发布时间】:2021-06-13 17:30:03 【问题描述】:

我正在使用 laravel 8 开发文件系统管理。

我创建了一个接受文件的函数。

public function uploadExperiment(Request $request)
    
        $file = $request->file('file');
        $uniqueId = time();
        $fileName = $file->getClientOriginalName();
        $filePath = $uniqueId . '/' . $fileName;

        Storage::disk('local')->put($filePath, file_get_contents($file));

        return response()->json(["success"=>true]);
    

我需要在上传过程中跟踪上传的大小,我需要将这个进度保存在数据库中。

例如,如果我想上传一个 2GB 大小的文件,这将需要一些时间。那么关于如何跟踪它的任何想法?

【问题讨论】:

【参考方案1】:

也许你想创建这个:

https://www.itsolutionstuff.com/post/php-laravel-file-upload-with-progress-bar-exampleexample.html

在 laravel 中获取大小文件上传:

$size = $request->file('file')->getSize();

也许可以使用它来获取您可以使用 jquery 的上传的百分比。但是如果你想在 php 中做,我认为你有一个可以做的想法:

function timeout_trigger() 
   var loaded = file.getLoaded(); // loaded part
   p = parseInt(loaded / size);

   $(".progress").css("max-width",p+"%");
   $(".progress-view").text(p+"%");
   if(p!=100) 
       setTimeout('timeout_trigger()', 20);
   

timeout_trigger();

我认为你有一个表格,你用POST 发送它,使用这个功能。

【讨论】:

请不要单独提交链接。链接往往会在某个时候停止工作;请详细说明你的答案。 我正在开发一个api。因此,在执行此功能期间,我需要跟踪上传的大小并将其转换为百分比并将其插入数据库中。前端应用程序应该调用另一个函数来检查数据库的进度,然后前端应用程序将显示它。我没有使用 laravel 开发前端。有一个 c++ 桌面应用程序会请求这个函数。知道如何实现我的目标吗? @AliWehbi hhow do you say the API it´s in laravel 8 ...为此我评论了这个链接。我不知道 C++ 我知道 php、laravel、javascript 等...我用一个可以用来获取文件大小的函数编辑了我的回复。但我无法帮助您获取文件的 % 上传,因为我不知道如何在 c++ 中获取 % 上传 我并不是在告诉你该函数应该用 C++ 编写。我所说的前端应用程序(使用 c++ 开发的桌面应用程序)需要与我的后端应用程序(使用 php laravel 开发)进行对话。所以这里前端需要通过调用我的 api 上传文件并将文件附加到它的主体(POST REQUEST)中。所以我需要在我的后端服务(PHP、LARAVEL)中跟踪上传文件的进度。

以上是关于如何在 api laravel 8 中跟踪文件的上传大小的主要内容,如果未能解决你的问题,请参考以下文章

如何在 laravel 8 中为 API 返回验证规则和消息作为 JSON

Laravel 8 中的 API

如何从 Laravel 8 中的自定义 Web 路由中删除“api/”前缀?

如何注销并撤销 laravel 8 api 中的所有 oauth 令牌?

如何使单选按钮记住用户在edit.blade.php laravel中给出的上一个选项

在 PHPUnit 中调用路由时如何在 Laravel 8 中模拟 Eloquent 模型