Laravel 4.使用Dropzone将图像保存到数据库。

时间:2014-12-24 01:42:01

标签: laravel upload dropzone.js

您好我将数据上传到数据库和文件夹有问题。 我有dropzone和干预图像

想要将用户抛出的图像加载到数据库中。这将是一些图片,而不是一张。

数据库连接我已经完成了所有工作,因为在没有dropzone工作的一个图像上。

问题: 在非对象

上调用成员函数getRealPath()

我的控制器

 $image = Input::hasFile('image');
            $destinationPath = 'uploads';
            $filename = str_random(12);
            // $filename  = time() . '.' . $image->getClientOriginalExtension();

            $path = public_path('img/offers/' . $filename);
            Image::make($image->getRealPath())->
            resize(null, 600, function ($constraint) {
                $constraint->aspectRatio();
                $constraint->upsize();
                })
            ->insert('img/watermark.png', 'bottom-left', 10, 10)
            ->save($path);

我的观点:

            {{ Form::open(array('url'=>'profile/offers/create', 'method' => 'POST','class'=>'dropzone', 'file'=>true)) }}

    <p>
      {{ Form::label('Title:') }}
      {{ Form:: text('title', null, array('class' => 'form-control', 'required' => '')) }}
    </p>

    <p>
        {{ Form::label('image', Select images') }}
        {{ Form::file('image', array('multiple')) }}
    </p>




    {{ Form::submit('Create offers', array('class'=>'secondary-cart-btn')) }}
    {{ Form::close() }}

3 个答案:

答案 0 :(得分:1)

我目前有一个使用DropZone通过Ajax上传文件的系统。 以下是我用来处理图像的代码。您可以看到,不是将路径传递给文件,我只是将文件对象传递给Image :: make并允许它查找文件。您当然可以将其传递给文件路径。

$file = Input::file('post_photo');
var_dump($file); // lets make sure we have what we expect
var_dump($file->getRealPath()); // this does output the path within tmp, IE /tmp/phpSuJC2h
$image           = Image::make($file);
$image_1           = Image::make($file->getRealPath()); // this also works
// Do manipulation

由于你得到的错误意味着Input :: file没有按照它应该返回一个对象,我将首先在$ image上执行var_dump。那应该输出Symfony \ Component \ HttpFoundation \ File \ UploadedFile类型的对象;如果没有,那至少应该让你开始找到错误。

在调试Ajax上传时,我经常发现使用Chrome中的开发工具(或您喜欢的任何浏览器)来检查发送到服务器的请求有效负载是很有用的。例如:

------WebKitFormBoundary6cBHjCmPgfALq9aM
Content-Disposition: form-data; name="post_photo"; filename="DSC_0088.JPG"
Content-Type: image/jpeg


------WebKitFormBoundary6cBHjCmPgfALq9aM--

答案 1 :(得分:0)

$image = Input::hasFile('image');只返回一个布尔值,指示输入参数是否有一个名为image的文件。它不会返回您可以使用的实际Input对象。

为此,您需要在file上调用Input方法:

$image = Input::file('image');

答案 2 :(得分:0)

如果要将数据保存在数据库中,可以使用:

$image = "data:image/jpeg;base64,".base64_encode( File::get($data['image']) );

DB::table('foo')->where('id', $id)->update( [ 'image'=> $image ] );

当您从数据库中读取文件时,您只需使用img html标记的src属性中的图像字段。