从android上传到php的图像最终为零字节



我试图将数据从Android上传到PHP服务器,文件上传成功,但文件变为零字节
我不知道怎么了,你能帮我吗?

<?php
include 'config.php';
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
if($_SERVER['REQUEST_METHOD'] == 'POST') {
$DefaultId = 0;
$ImageData = $_POST['image_data'];
$ImageName = $_POST['image_tag'];
$ImagePath = "upload/$ImageName.jpg";
$ServerURL = "http://192.168.18.125/$ImagePath";
$InsertSQL = "INSERT INTO imageupload (image_path,image_name) 
values('$ServerURL','$ImageName')";
if(mysqli_query($conn, $InsertSQL)) {
$decodedImage = base64_decode($ImageData);
file_put_contents($ImagePath,$decodedImage);
echo "Your Image Has Been Uploaded.";
}
mysqli_close($conn);
} else {
echo "Please Try Again";
}
?>

这是我的android代码,我使用asynctask上传图像
我不知道我的代码出了什么问题。

public void UploadImageToServer() {
FixBitmap.compress(Bitmap.CompressFormat.JPEG, 40, byteArrayOutputStream);   
byteArray = byteArrayOutputStream.toByteArray();
ConvertImage = Base64.encodeToString(byteArray, Base64.DEFAULT);
class AsyncTaskUploadClass extends AsyncTask<Void,Void,String> {
@Override
protected void onPreExecute() {
super.onPreExecute();
progressDialog = ProgressDialog.show(MainActivity.this,"Image is Uploading","Please Wait",false,false);
}
@Override
protected void onPostExecute(String string1) {
super.onPostExecute(string1);
progressDialog.dismiss();        
Toast.makeText(MainActivity.this,string1,Toast.LENGTH_LONG).show();
}
@Override
protected String doInBackground(Void... params) {    
ImageProcessClass imageProcessClass = new ImageProcessClass();
HashMap<String,String> HashMapParams = new HashMap<String,String>();
HashMapParams.put(ImageTag, GetImageNameFromEditText);
HashMapParams.put(ImageName, ConvertImage);    
String FinalData = imageProcessClass.ImageHttpRequest("http://192.168.18.175/Android%20Upload%20Image/upload-image-to-server.php", HashMapParams);
return FinalData;
}
}
AsyncTaskUploadClass AsyncTaskUploadClassOBJ = new AsyncTaskUploadClass();
AsyncTaskUploadClassOBJ.execute();
}

尝试回显base64字符串。。如果一切顺利。。。尝试使用以下代码在服务器中创建映像。

// open the output file for writing
$output_file="local path to create file";
$ifp = fopen( $output_file, 'wb' ); 
// split the string on commas
// $data[ 0 ] == "data:image/png;base64"
// $data[ 1 ] == <actual base64 string>
$data = explode( ',', $base64_string );
// print data here to check base64 format ..then $data[0] or $data[1] in next line
fwrite( $ifp, base64_decode( $data[ 0 ] ) );
// clean up the file resource
fclose( $ifp ); 

最新更新