【发布时间】:2020-10-05 13:54:51
【问题描述】:
我想将拍摄的照片上传到数据库。插入成功,所有细节都上传到数据库,还有图片的名称。但不知何故,在我的图像文件夹中,图像无法打开。它说“看起来我们不支持这种文件格式”。怎么了?
这是我的 php 代码
<?php
header("Access-Control-Allow-Origin: *");
$conn = new mysqli("localhost", "root","","matawarga");
if($conn->connect_error) {
echo "Unable to connect, please try again";
//die();
}
$postdata = file_get_contents("php://input");
if(isset($postdata))
{
//$namesearch = $_POST['filter'];
$request = json_decode($postdata);
$userlogged = $request->usernamelogged;
$judul = $request->judul;
$tgl = $request->tglKejadian;
$desc = $request->deskripsi;
$instansi = $request->tujuan;
$longitude = 0;
$latitude = 0;
$dateformat = strtotime($tgl);
$newdateformat = date('Y-m-d', $dateformat);
$myArr = array();
$sql = "INSERT INTO kejadian(username,judul,deskripsi,instansi_tujuan,tanggal,longitude,latitude) VALUES (?,?,?,?,?,?,?)";
$stmt = $conn->prepare($sql);
$stmt->bind_param("sssssii",$userlogged, $judul, $desc, $instansi, $newdateformat,$longitude,$latitude);
if($stmt->execute())
{
$idk = $stmt->insert_id;
$image = str_replace('data:image/jpeg;base64,','', $url);
$image = str_replace(' ', '+', $image);
$data = base64_decode($image);
file_put_contents('images/'.$idk.'.jpg', $data);
$url = ".jpg";
$sql3 = "INSERT INTO gambar_kejadian(idkejadian,extension) VALUES (?,?)";
$stmt = $conn->prepare($sql3);
$stmt->bind_param("is", $idk, $url);
$stmt->execute();
$myArr['pesan'] = "Berhasil ditambahkan.";
}
else
{
$myArr['pesan'] = "Gagal" .$judul;
}
}
else
{
$myArr['pesan'] = "Gagal" .$desc;
}
echo json_encode($myArr);
$conn->close();
?>
【问题讨论】:
-
$image = str_replace(' ', '+', $image);这部分引起了我的一些关注,除了删除data:image/jpeg;base64之外,您不必修改它 -
什么是
$url?它在您提供的代码中不存在,$desc将永远不会存在于底部的} else {中 -
不要这样循环变量,
$url = '.jpg'应该是$extension否则你自己也会感到困惑 -
也
$data = explode( ',', $base64_string )[1]可能是处理 base64 编码图像的最佳方式,它会返回重要的部分(做你自己的健全性检查) -
也许你上传了别的东西然后jpeg,解析
data:image/jpeg
标签: php ionic-framework cordova-plugins