使用Laravel上传图片 - 上传为文件夹文件

时间:2014-05-28 17:22:58

标签: php image file-upload laravel-4

。大家好,我试图让用户选择一个文件,上传它,然后在数据库中保存它的路径。

到目前为止,我已将照片发送到"上传"因为它传递了一个验证器,并且路径被发送到数据库,但除此之外它不起作用。

我可以在我的FTP FileZilla中看到“公共/上传/图片”中有一些内容。 named' cookie_monster_sir.png' (我将它用作测试图片,不要评判我)但由于某种原因,它被保存为文件夹!大声笑。我不知道那是怎么回事。然后在cookie_monster_sir.png文件夹中有另一个标题为' php'然后是数字和字母。我在上传的某处猜测文件搞砸了。我已尝试上传多次,但我仍然只拥有相同的文件夹和更多以' php'开头的文件。然后是数字和字母。

任何有关如何解决此问题以及允许图片上传功能的解释或帮助将不胜感激!谢谢你的时间!

以下是我的观点:

{{ Form::open(array('route'=>'order-create-post', 'name' => 'orderForm', 'id' => 'orderForm', 'files' => true)) }}

{{ Form::file('drawing_of_job') }}

<div class="row">
    <input type = "submit" name = "submit" value="Create Order" id="submit" class="button radius expand"/>      
</div>
{{ Form::close() }}

控制器:

public function postCreate(){

        $validator = Validator::make(Input::all(),
            array(
       'drawing_of_job'     => 'required|image',
            )
        );

        if($validator->fails()){
            return Redirect::route('order-create')
                ->withErrors($validator)
                ->withInput()
                ->with('global', 'There are fields with errors.');

        }   else   {

            /*Create Order*/
                $drawing_of_job         = Input::file('drawing_of_job');
                $file_name          = $drawing_of_job->getClientOriginalName();
                $path_to_drawing        = 'uploads/images/' . $file_name;
                $drawing_of_job->move($path_to_drawing);

$order = Order::create(array(
                             'path_to_drawing'      => $path_to_drawing,
                       ));

            if($order->save()){
                return Redirect::route('home')
                    ->with('global', 'Your order has been created.');
            }
        }
            return Redirect::route('home')
                    ->with('global', 'The order could not be created.');        
        }

1 个答案:

答案 0 :(得分:1)

那是因为它是你正在做的事情:)

$file_name = $drawing_of_job->getClientOriginalName();
$path_to_drawing = 'uploads/images/' . $file_name;

^ __在这里你要创建一个带有文件名的(用于Laravel)路径,比如'uploads/images/cookie_monster_sir.png';(让我们忘记文件名中的扩展名)

$drawing_of_job->move($path_to_drawing);

^ __在这里您移动文件而不提供名称,因此它在您指定的文件夹中保存为 temp 名称。事实上,你应该得到类似的东西:

'uploads/images/cookie_monster_sir.png/yancalicgday';

尝试提供名称:

$path_to_drawing = 'uploads/images/';
$drawing_of_job->move($path_to_drawing, $file_name);

这应该可以正常工作。