如何使用 PHP Laravel 将二进制图像上传到 SQL Server



据我所知,将图像上传到数据库是错误的,但是在这个特定问题上,我必须将图像上传到SQL Server。我找到了一些结果,例如使用base64字符串。 我的数据库结构包含很多SQL Serverimage类型的图像。 由于我不熟悉SQL服务器,所以我使用Laravel 5.4来连接数据库。

现在的问题是这个。

如何在 laravel 中使用 php 将图像上传到 SQL Server(列门类型:binary image(?

显示此图像的最佳方式是什么?

您可以将图像保存到临时位置,然后使用 file_get_contents(( 将其读取到 var 中,然后将其插入数据库列(必须是二进制 blob 或类似的东西(。要显示它,您可以使用如下路线:

Route::get('images/{id}', function($id)
{
$image = Images::find($id);
$image = Response::make($image->content, 200);
$image->header('Content-Type', 'image/jpeg');
return $image;
});

这假设您正在使用 Eloquent 来处理您的数据库。

使用此处的帮助对此进行了测试: https://laravel.io/forum/02-17-2014-how-do-you-save-image-to-database-and-display-it-on-website

我的回答有点混乱,因为Eloquent不支持Image BLOB到SQL Server,所以这个概念是我们将图像视为基于PHP PDO的SQLSrv驱动程序的参数,将图像加载到MS SQL Server 2012中,然后我们可以使用BindParam使用裸PDO上传SQLSrv。


Route::post("/example", function(Request $request) {
/** @var PDO $db */
$db = DB::connection("sqlsrv")->getPdo();
$stmt = $db->prepare("INSERT INTO gambar VALUES(:id, :gambar)");
$stmt->bindValue("id", $request->input("angka"), PDO::PARAM_INT);
$gambar = $request->file("gambar")->getContent();
$stmt->bindParam("gambar", $gambar,
PDO::PARAM_LOB, 0, PDO::SQLSRV_ENCODING_BINARY);
// $stmt->bindValue("gambar", $request->file("gambar")->getContent(),
// PDO::PARAM_LOB);
dd($stmt->execute());
});

这很混乱,因为我无法使用内置的雄辩ORM,可悲的是...噪音。。。

相关内容

  • 没有找到相关文章

最新更新