我的应用程序中有一个文件上传模块。我可以在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');
更新:
在您的情况下,您应该使用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);
}