2016-05-04 36 views
3

首先,我很抱歉我的英语不好。上传文件/图像与类存储Laravel 5.2

我想上传一个文件/图像从我的驱动程序到我的项目目录使用类Storage。我希望每个文件/图像都能上传/移动到我的public/img目录中。我对我的看法和我的岗位控制器上使用Form::file('img'),我写这篇文章

$img = Input::file('img'); 
    if ($img !== null) { 
     $filename  = $img->getClientOriginalName(); 
     Storage::disk('uploads')->put('filename', $filename); 

     $jenis->img  = $filename; 
    } 

和我config/filesystem我写这篇文章

'uploads' => [ 
     'driver' => 'local', 
     'root' => public_path() . '/img', 
    ], 

但是,没有发生在我public/img目录,没有新的文件/图像在那里。 你能帮我解决我的代码有什么问题吗? ,我希望你们可以帮助我如何上传laravel中的文件/图像

+0

需要帮助[先生亚历克斯](http://stackoverflow.com/users/2781542/jacurtis) –

回答

6

看起来像你的问题是你没有存储文件,你引用它的名字而不是它的内容。

试试这个:

Storage::disk('uploads') -> put($filename, file_get_contents($img -> getRealPath())); 
+0

感谢[马特](https://stackoverflow.com/users/625407/matt-mcdonald) 它的工作原理,但我真的不知道发生了什么事在那put()。你能解释一下吗?谢谢 –

+1

@DarmaKurniawanHarefa传递给'put'的第一个参数是文件的完整路径(因为您已经在config中设置了一个默认文件夹,如果您不希望它在子文件夹中,这可以只是文件的名称)。第二个参数是文件的内容。因此,使用php'file_get_contents'函数将文件内容传递给存储'put'方法。输入文件中的getRealPath方法传递已上传到服务器的临时文件的实际路径。 –

+0

完美!谢谢:D – Rkey

0

在我的文件系统文件配置我的图像目录中这样说:

'uploads' => [ 
    'driver' => 'local', 
    'root' => public_path("/img"), 
], 

我认为你可以用你的方式,但另一点。

为了让您的视图中的文件,你应该使用File ::获取Laravel功能:

$filename = $img->getClientOriginalName(); 
Storage::disk('uploads')->put($filename, \File::get($file)); 

有了这个就足够了,将文件保存在目录上传指定文件系统中的文件的名称。

+0

谢谢[胡安](http://stackoverflow.com/users/5560051/juan-manuel-barea-mart%c3%adnez),但类文件dosnt为我工作。需要定义/使用File类? –

+0

这是没有必要的,但试着用这种方式来定义:在你的控制器中使用“Illuminate/Contracts/Filesystem/Filesystem”。无论如何,什么错误显示你laravel? –

+0

\ File :: get($ file);是该文件还是img? –

相关问题