Laravel 5动态地将图像移动到另一个文件夹

时间:2016-01-26 08:15:19

标签: php laravel laravel-5

我的应用中有一个fileupload模块。我可以上传img / upload / {container_id} / file_name_here中的文件。

{container_id}取决于用户将使用的文件夹。

我遇到的问题是当他们尝试将记录编辑到另一个文件夹时。他们上传的文件仍保留在旧文件夹中。

我想将文件也移动到用户定义的新文件夹。

我这里有我的代码,我一直在移动文件。

$attachments = Attachment::where('document_id',$id)->select('filename')->get();
        $document = Document::findOrFail($id);

        foreach($attachments as $attachment)
        {
            $attachment->filename = base_path().'/public/img/upload/'.$document->container_id."/".$attachment->filename;
        }

        Document::findOrFail($id)->update($request->all());

        $document = Document::findOrFail($id);

        $x = Attachment::where('document_id','=',$id)->count();

        foreach($attachments as $file)
        {

            HOW_DO_I_MOVE_THE_FILE????
            $x++;
        }

        return redirect('documents');

1 个答案:

答案 0 :(得分:4)

<强>更新

在您的情况下,您应该使用rename()

rename ('current/path/to/foo', 'new/path/to/foo');

使用rename(),您不仅可以重命名,还可以移动!简单地说,如果第二个参数的路径不同。因此,您可以在循环中将附件路径用作第一个参数,将目标路径用作第二个。

文档:http://php.net/rename

在上传后移动的Laravel方法之下。

来自文档:

$request->file('photo')->move($destinationPath);

$request->file('photo')->move($destinationPath, $fileName);

photo是文件上传输入元素的名称。

注意,如果您进行多重上传,则可以使用数组表示法,例如:

foreach ($request->file('photo') as $photo)
{
    $photo->move($destinationPath, $chooseYourFileName);
}