我很难将图像数据存储到数据库中,我尝试了两种方法,第一种方法正在工作,但第二种方法无效,我实际上想要使用。
工作代码:
<?php
if($_SERVER['REQUEST_METHOD']=='POST'){
$image = $_POST['image'];
$name = $_POST['name'];
require_once('dbConnect.php');
$id = 86;
$path = "uploads/$id.jpg";
$sql = "UPDATE user SET imagePath = '$imagename' where id = '$id'";
if(mysqli_query($con,$sql)){
file_put_contents($path,base64_decode($image));
echo "Successfully Uploaded";
}
mysqli_close($con);
}else{
echo "Error";
}
但是以下代码不起作用。我使用相同的逻辑,但这次使用$_FILES
和move_uploaded_file
。我得到点“echofully Uploaded”,但图像没有保存到uploads文件夹中。
<?php
if($_SERVER['REQUEST_METHOD']=='POST'){
$name=$_FILES["image"]["name"];
$temp_name=$_FILES["image"]["tmp_name"];
require_once('dbConnect.php');
$id = 96;
$imagename=$id."_".time().$file_name;
$path = "uploads/".$imagename.".png";
$sql = "UPDATE user SET imagePath = '$imagename' where id = '$id'";
$uploads_dir = '/uploads';
if(mysqli_query($con,$sql)){
move_uploaded_file($temp_name, "$uploads_dir/$name");
echo "Successfully Uploaded";
}
mysqli_close($con);
}else{
echo "Error";
}
非常感谢任何帮助。
更新:这是从android调用的方式:
protected Map<String, String> getParams() throws AuthFailureError {
//Converting Bitmap to String
String image = getStringImage(((BitmapDrawable)imageView.getDrawable()).getBitmap());
//Getting Image Name
String name = editTextName.getText().toString().trim();
//Creating parameters
Map<String,String> params = new Hashtable<String, String>();
//Adding parameters
params.put(KEY_IMAGE, image);
params.put(KEY_NAME, name);
//returning parameters
return params;
}
更新2:位图图像编码为Base64,如下所示。
public String getStringImage(Bitmap bmp){
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.JPEG, 100, baos);
byte[] imageBytes = baos.toByteArray();
String encodedImage = Base64.encodeToString(imageBytes, Base64.DEFAULT);
return encodedImage;
}
参数中的KEY_NAME
相等"name"
。
答案 0 :(得分:0)
如果显示“Successfully Uploaded”连接已完成且更新,但问题应该在这里
move_uploaded_file($tmp_name, "$uploads_dir/$name");
你可能在输入中没有称为“名字”,我的意思是<input type='file' name='xxxxx'/>
你应该试试
$name=$_FILES["image"]["xxxxx"];