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

时间:2016-08-16 15:54:00

标签: laravel file-upload laravel-5.1

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

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

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

3 个答案:

答案 0 :(得分: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 :(得分:1)

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

答案 2 :(得分:0)

在Laravel中,查看import urllib #import ssl from bs4 import BeautifulSoup #'http://py4e-data.dr-chuck.net/known_by_Fikret.html' url = raw_input('Enter URL : ') position = int(raw_input('Enter position : ')) count = int(raw_input('Enter count : ')) print('Retrieving: ' + url) soup = BeautifulSoup(urllib.urlopen(url).read()) for x in range(1, count + 1): link = list() for tag in soup('a'): link.append(tag.get('href', None)) print('Retrieving: ' + link[position - 1]) soup = BeautifulSoup(urllib.urlopen(link[position - 1]).read()) ,我希望您能获得文件的所有内容,以及他们如何管理文件。

如何 复制文件 移动文件 删除文件 一切都在其中清楚地描述。

要在Laravel中复制文件,其功能是:

vendor\laravel\framework\src\Illuminate\Filesystem\Filesystem.php

我认为现在没有什么可说的了。 只需使用

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

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