Php Laravel-UploadedFile实例的文件路径
我有一个Laravel4.2API,它在创建资源时接受文件上传。该文件是用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
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-看起来现在更新了。谢谢你指出这一点。