将请求中的文件移动或复制到多个位置

Move or copy a file from the request to multiple locations

我正在使用 Laravel 并接受输入和文件上传。该页面接受用户想要对订单进行的更改。最终目标是获取此输入并将其应用于多个订单。

我可以重复使用每个订单的输入。但是,什么是将请求中的文件复制到多个目录的好方法呢?例如,在文档中,我最初有:$request->file('photo')->move($destinationPath, $fileName); 这对一个订单来说工作正常。但现在我想将它应用于许多订单,我不能再从请求中移动同一个文件,因为它不存在。

而且 UploadedFile 对象似乎没有 copy() 方法。任何想法,将不胜感激。谢谢。

不要过度依赖组件。保持简单

$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);

如果我假设这些文件将保持不变(您不允许您的用户按顺序修改这些文件),我认为将文件的一份副本存储在服务器并使用数据库 table 来确定该文件属于哪个订单,并在 table 中管理它。您可能需要创建一个 files table 和一个 file_order table 并将其与您的 orders table 建立多对多关系,但在最后,如果允许这些文件很大,可以为您节省很多 space,而且在我看来,它更易于管理。

在 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');

希望对您有所帮助。