您好我将数据上传到数据库和文件夹有问题。 我有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() }}
答案 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属性中的图像字段。