我正嘗試使用Volley將圖像上傳到遠程服務器,但圖像無法上傳,並且服務器沒有響應。使用Volley上傳圖像失敗
該應用程序顯示錯誤作爲Toast Message
。
我MainActivity.java文件
package com.example.mashood.test;
import android.app.Activity;
import android.app.Fragment;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.content.Intent;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.util.Base64;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import com.android.volley.AuthFailureError;
import com.android.volley.Request;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
public class MainActivity extends Activity {
ImageView imageView;
EditText edit1;
EditText edit2;
Button choose;
Button upload;
final int IMG_REQUEST=0;
Bitmap bitmap;
public static String url="http://www.muftiattaullahmultani.com/android/image.php";
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageView=(ImageView)findViewById(R.id.imageView);
edit1=(EditText)findViewById(R.id.edit);
choose=(Button)findViewById(R.id.choose);
upload=(Button)findViewById(R.id.upload);
upload.setOnClickListener(
new Button.OnClickListener(){
@Override
public void onClick(View v) {
uploadImage();
}
});
choose.setOnClickListener(
new Button.OnClickListener() {
@Override
public void onClick(View v) {
SelectImage();
}
});
}
void SelectImage()
{
Intent intent=new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(intent,IMG_REQUEST);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode==IMG_REQUEST&&resultCode==RESULT_OK&& data!=null)
{
Uri path=data.getData();
try {
bitmap= MediaStore.Images.Media.getBitmap(getContentResolver(),path);
imageView.setImageBitmap(bitmap);
imageView.setVisibility(View.VISIBLE);
edit1.setVisibility(View.VISIBLE);
} catch (IOException e) {
e.printStackTrace();
}
}
}
private String ImageToString(Bitmap bitmap)
{
ByteArrayOutputStream outputstream=new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG,100,outputstream);
byte[] imgbyte=outputstream.toByteArray();
return Base64.encodeToString(imgbyte,Base64.DEFAULT);
}
private void uploadImage()
{
StringRequest stringRequest=new StringRequest(Request.Method.POST, url, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Toast.makeText(getApplicationContext(),"Succes",Toast.LENGTH_LONG).show();
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(getApplicationContext(),"Error",Toast.LENGTH_LONG).show();
}
}){
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String,String>param=new HashMap<String, String>();
param.put("name","img");
param.put("image",ImageToString(bitmap));
return param;
}
};
MySingleton.getInstance(getApplicationContext()).addToRequestQueue(stringRequest);
}
}
服務器image.php文件
<?PHP
include 'database.php';
$name=$_POST['name'];
$image=$_POST['image'];
$path="/home4/hazrat/public_html/audio/$name.jpg";
file_put_contents($path,base64_decode($image));
echo "succesful";
?>
應用程序是顯示錯誤,當我點擊上傳按鈕敬酒消息。我錯過了代碼中的某些內容,或者服務器端PHP腳本中是否有任何錯誤?
您可以顯示錯誤消息的內容嗎? – chirag90
我猜'<?PHP'應該是'<?php' –
它顯示了toast消息在錯誤偵聽器裏面..而不是執行on響應方法..錯誤偵聽器正在執行..看看uploadImage()函數 – MSD