Android-使用HttpURLConnection和PHP将Base64字符串发送到mysql服务器
尝试通过HttpURLConnection将Base64编码的位图发送到PHP脚本上的POST变量时遇到问题 它显示toast“上载成功”,但我的数据库未填充 我首先将位图变量转换为Base64,其中bSignature是位图,sSignature是字符串Android-使用HttpURLConnection和PHP将Base64字符串发送到mysql服务器,php,android,sql,bitmap,base64,Php,Android,Sql,Bitmap,Base64,尝试通过HttpURLConnection将Base64编码的位图发送到PHP脚本上的POST变量时遇到问题 它显示toast“上载成功”,但我的数据库未填充 我首先将位图变量转换为Base64,其中bSignature是位图,sSignature是字符串 sSignature = encodeToBase64(bSignature, Bitmap.CompressFormat.JPEG,100); 以下是我的任务代码: class BackgroundTaskSig extends Asyn
sSignature = encodeToBase64(bSignature, Bitmap.CompressFormat.JPEG,100);
以下是我的任务代码:
class BackgroundTaskSig extends AsyncTask<String,Void,String> {
String json_signature_url;
@Override
protected void onPreExecute() {
json_signature_url = "http://abhandyman.x10host.com/upload_signature.php";
}
@Override
protected String doInBackground(String... args) {
sSignature = args[0];
try {
URL url = new URL(json_signature_url);
HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
httpURLConnection.setRequestMethod("POST");
httpURLConnection.setDoInput(true);
OutputStream outputStream = httpURLConnection.getOutputStream();
BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream,"UTF-8"));
String data_string = URLEncoder.encode("image","UTF-8")+"="+URLEncoder.encode(sSignature,"UTF-8");
bufferedWriter.write(data_string);
bufferedWriter.flush();
bufferedWriter.close();
outputStream.close();
InputStream inputStream = httpURLConnection.getInputStream();
inputStream.close();
httpURLConnection.disconnect();
return "Upload Successful";
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onProgressUpdate(Void... values) {
super.onProgressUpdate(values);
}
@Override
protected void onPostExecute(String result) {
Toast.makeText(getApplicationContext(),result,Toast.LENGTH_LONG).show();
}
}
class BackgroundTaskSig扩展了AsyncTask{
字符串json_签名_url;
@凌驾
受保护的void onPreExecute(){
json_签名_url=”http://abhandyman.x10host.com/upload_signature.php";
}
@凌驾
受保护的字符串doInBackground(字符串…args){
sSignature=args[0];
试一试{
URL URL=新URL(json\u签名\u URL);
HttpURLConnection HttpURLConnection=(HttpURLConnection)url.openConnection();
httpURLConnection.setRequestMethod(“POST”);
httpURLConnection.setDoInput(true);
OutputStream OutputStream=httpURLConnection.getOutputStream();
BufferedWriter BufferedWriter=新的BufferedWriter(新的OutputStreamWriter(outputStream,UTF-8));
字符串数据\u String=urlcoder.encode(“图像”,“UTF-8”)+“=”+urlcoder.encode(sSignature,“UTF-8”);
bufferedWriter.write(数据字符串);
bufferedWriter.flush();
bufferedWriter.close();
outputStream.close();
InputStream InputStream=httpURLConnection.getInputStream();
inputStream.close();
httpURLConnection.disconnect();
返回“上传成功”;
}捕获(格式错误){
e、 printStackTrace();
}捕获(IOE异常){
e、 printStackTrace();
}
返回null;
}
@凌驾
受保护的void onProgressUpdate(void…值){
super.onProgressUpdate(值);
}
@凌驾
受保护的void onPostExecute(字符串结果){
Toast.makeText(getApplicationContext(),result,Toast.LENGTH_LONG.show();
}
}
这是我的PHP脚本,其中结构签名列设置为“blob”
<?php
require "init_signature.php";
$job_id = "1";
$image = $_POST['image'];
$image = base64_decode($image);
$sql_query = "UPDATE signature SET signature='$image' WHERE id='$job_id'";
if (mysqli_query($con,$sql_query)){
echo "Image uploaded successfully";
}else{
echo "Error in insertion " . mysqli_error($con);
}
?>
除非您在其他地方自动提交,否则插入时不会提交。它会显示toast“Upload Successful”
您最好从该输入流中读取,以查看脚本返回的内容。现在您忽略了回送。您不能使用普通SQL发送二进制数据。这可能解决了一个类似的问题:我将代码更改为now,并显示脚本中的inputstream-它显示以下错误消息:解析错误:语法错误意外$sql\u查询(T\u变量)在第8行
除非您在其他地方自动提交,否则插入时没有提交。它显示toast“上传成功“
您最好从该输入流中读取,以查看脚本返回的内容。现在您忽略了回送。您不能使用普通SQL发送二进制数据。这可能解决了一个类似的问题:我已将代码更改为now并显示脚本中的inputstream-它显示以下错误消息:Parse error:syntax error unexpected$sql\u query(T\u变量)在第8行