【问题标题】:laravel 5 multiple upload and store their name into databaselaravel 5 多次上传并将其名称存储到数据库中
【发布时间】:2015-12-17 12:23:53
【问题描述】:

我目前正在关注这个answer,这是我的代码

public function add(Request $request) {
$files=[];
if($request->file('remind_letter')) $files[]=$request->file('file1');
if($request->file('answer_note')) $files[]=$request->file('file2');
if($request->file('negotiation')) $files[]=$request->file('file3');
foreach($files as $file){
if(!empty($file){
$filename=$file->getClientOriginalName();
$extension = $file->getClientOriginalExtension();
Storage::disk('local')->put($filename.'.'.$extension,
                                         File::get($filename));
$entry = new Docks();
$entry->div = $request->input('div');
$entry->year = $request->input('year');
$entry->activity = $request->input('activity');
$entry->corporate = $request->input('corporate');
--- need logic to save their path into databse ----
$entry->save

我仍然很困惑如何将他们的路径保存到数据库中 应该是这样的吧?

$entry->remind_letter = $file->getFilename().'.'.$extension
$entry->answer_note= $file->getFilename().'.'.$extension
$entry->negotiation = $file->getFilename().'.'.$extension

【问题讨论】:

  • 为什么在files之前没有$
  • @OzanKurt, ups,这个致命的错误应该$files = [];谢谢

标签: php laravel file-upload laravel-5


【解决方案1】:

您只能使用$filename=$file->getClientOriginalName(); 指定文件名 这将为您提供包含原始扩展名的完整文件名。

假设您要将文件上传到文件夹“/public/files/”。

我建议你在你的 foreach 中使用它:

if( !empty($file) )
{
    $file->move(base_path() . '/public/files/', $file->getClientOriginalName());
}

然后在数据库中存储文件路径(我以文件路径属性为例):

$entry->filepath = base_path() . '/public/files/' . $file->getClientOriginalName();

通过这种方式,您可以将文件保存在所需的位置,然后在数据库中存储文件的完整路径。

【讨论】:

  • 让我试试,所以如果我使用$entry->filepath=base_path(),它将在db中的每一列中返回路径文件,例如文件remind_letter到列remind_letteranswer_note到列answer_note和@987654328 @进入列negotiation ?
  • base_path() 将仅返回您的应用程序根路径,而不是文件路径。出于这个原因,你必须像我上面写的例子一样给出完整的文件路径
猜你喜欢
  • 1970-01-01
  • 2015-03-30
  • 2017-02-05
  • 2018-03-15
  • 1970-01-01
  • 2016-10-12
  • 1970-01-01
  • 2021-09-16
  • 1970-01-01
相关资源
最近更新 更多