Php Laravel-UploadedFile实例的文件路径

Php Laravel-UploadedFile实例的文件路径,php,laravel,laravel-4,upload,Php,Laravel,Laravel 4,Upload,我有一个Laravel4.2API,它在创建资源时接受文件上传。该文件是用 Input::file('file') 现在我想编写一个脚本(也是在Laravel中),该脚本将批量创建一些资源(因此我不能使用发布到API端点的HTML表单)。如何将文件路径转换为UploadedFile的实例,以便Input::file('file')将在API中获取它?自己构造一个实例即可。API是: 因此,您应该能够做到: $file = new UploadedFile( '/absolute/pat

我有一个Laravel4.2API,它在创建资源时接受文件上传。该文件是用
Input::file('file')


现在我想编写一个脚本(也是在Laravel中),该脚本将批量创建一些资源(因此我不能使用发布到API端点的HTML表单)。如何将文件路径转换为
UploadedFile
的实例,以便
Input::file('file')
将在API中获取它?

自己构造一个实例即可。API是:

因此,您应该能够做到:

$file = new UploadedFile(
    '/absolute/path/to/file',
    'original-name.gif',
    'image/gif',
    1234,
    null,
    TRUE
);

注意:您必须将第6个构造参数指定为TRUE,以便UploadedFile类知道您正在通过单元测试环境上载映像。

根据Alexandre Thebaldi的回答,这里是Laravel 8.x

  /**
   * Create an UploadedFile object from absolute path 
   *
   * @static
   * @param     string $path
   * @param     bool $public default false
   * @return    object(Symfony\Component\HttpFoundation\File\UploadedFile)
   * @author    Alexandre Thebaldi
   */

  public static function pathToUploadedFile( $path, $public = false )
  {
    $name = File::name( $path );

    $extension = File::extension( $path );

    $originalName = $name . '.' . $extension;

    $mimeType = File::mimeType( $path );

    $size = File::size( $path );

    $error = null;

    $test = $public;

    $object = new UploadedFile( $path, $originalName, $mimeType, $size, $error, $test );

    return $object;
  }
use\Filesystem\Filesystem;
使用Illumb\Http\UploadedFile;
/**
*从绝对路径创建UploadedFile对象
*
*@param string$path
*@param bool$test default true
*@return对象(照亮\Http\UploadedFile)
* 
*根据Alexandre Thebaldi的回答:
* https://stackoverflow.com/a/32258317/6411540
*/
公共函数pathtouploadefile($path,$test=true){
$filesystem=新文件系统;
$name=$filesystem->name($path);
$extension=$filesystem->extension($path);
$originalName=$name.'...$extension;
$mimeType=$filesystem->mimeType($path);
$error=null;
返回新的上传文件($path、$originalName、$mimeType、$error、$test);
}

使用这种方法,
$file->isValid()
返回false(因为
是上传的文件()
返回false);因此,在API中,我无法使用
Input::file()
选择
UploadedFile
实例,我也无法执行
$file->move()
。您的回答为我指明了正确的方向,通过对API进行一些小的调整,我成功地解决了这个问题。谢谢您必须将第6个构造参数指定为TRUE,以便UploadedFile类知道您正在通过单元测试环境上载映像。@Alexandros-它在一年前被标记为正确并经过了升级,您确定这不仅仅是您自己代码的一个怪癖吗?你能证明这是必需的吗?是的,我肯定。UploadedFile构造函数是
public function\uu构造函数($path,$originalName,$mimeType=null,$size=null,$error=null,$test=false)
如果$test未通过TRUE,则phpunit测试失败。我认为@AlexandreThebaldi发布了相同的版本。@Alexandros-看起来现在更新了。谢谢你指出这一点。