2016-08-16 41 views
0

我正在使用Laravel并接受输入和文件上传。此页面用户想要对订单进行更改。最终目标是采取这种输入并将其应用于多个订单。将文件从请求移动或复制到多个位置

我可以重用每个订单的输入。但是,对于我来说,将请求中的文件复制到多个目录会是一个好方法吗?例如,正如在文档中,我原来有:$request->file('photo')->move($destinationPath, $fileName);哪一个顺序工作正常。但是现在我想将它应用到很多订单中,因为它不存在,所以我无法再从请求中移动相同的文件。

而且它看起来像UploadedFile对象没有copy()方法。任何想法,将不胜感激。谢谢。

回答

1

不要太依赖元件。保持简单

$request->file('photo')->move($destination_path, $file_name); 

//Add DIRECTORY_SEPARATOR between path and filename if needed 
copy($destination_path.$file_name, $new_path.$new_file_name); 
1

如果我可以提一个建议假设这些文件将保持不变(你是不是让你的用户通过命令来修改这些文件),我觉得很有道理存储一个副本服务器上的文件,并使用数据库表来确定该文件属于哪些订单,并在表中对其进行管理。您可能需要创建一个files表和一个file_order表,并为它提供与您的orders表的多对多关系,但最终如果允许这些文件很大,可以为您节省大量空间,并且在我看来,使其更易于管理。

0

在Laravel中,看看vendor\laravel\framework\src\Illuminate\Filesystem\Filesystem.php,我希望你能得到文件的所有内容,管理文件的方式。

如何副本的文件移动文件,删除一切都在清楚地描述了一个文件。

对于副本Laravel文件,有功能:

/** 
* Copy a file to a new location. 
* 
* @param string $path 
* @param string $target 
* @return bool 
*/ 
public function copy($path, $target) 
{ 
    return copy($path, $target); 
} 

我觉得没有什么现在还不好说。 只是使用,

File::copy('file_name_with_full_path', 'target_directory_where_copy'); 

希望,这可能对你有所帮助。

相关问题