You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel Media Library中file_description字段重复存储相同值问题

问题解决:批量上传文件后file_description字段值重复

问题出在循环处理文件时,你错误地重复调用了addMediaFromRequest('scan_copy1')——这个方法每次都会从请求中获取scan_copy1数组的第一个文件,导致所有媒体记录复用相同的元数据,最终出现file_description字段值完全一致的情况。

修正后的代码如下:

//Save the added array of supporting scanned documents, if available//

if($request->hasfile('scan_copy1'))
{
   $x = 0;
   foreach($request->file('scan_copy1') as $copy1)
   {
     $x=$x+1;

     $name=$copy1->getClientOriginalName();
           
     list($nName,$nExt) = explode('.',$name);
     $scanCopy1 = Auth::user()->id.'_'.microtime(true) . '_' . str_replace(' ', '_',  $name);
           
     // 改用addMedia传入当前循环的文件实例$copy1,而非重复从request获取
     $client->addMedia($copy1)
            ->withCustomProperties(['mime-type' => 'image/jpeg'])
            ->preservingOriginal()
            ->usingName($nName)
            ->usingFileName($scanCopy1)
            ->toMediaCollection(User::$media_collection_main_scan.$x);
           
  }
}

额外补充两点优化建议:

  • 如果需要给每个文件设置不同的file_description,可以在循环中从请求中获取对应位置的描述参数(比如$request->input('scan_copy_desc')[$x-1]),再通过->withCustomProperties(['file_description' => $desc])绑定到媒体记录中。
  • 原代码里的time()在循环中会生成相同的时间戳,改用microtime(true)可以避免文件名重复冲突。

内容的提问来源于stack exchange,提问作者Oladeji

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 13:05:25