2017-08-17 128 views
0

我正嘗試使用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腳本中是否有任何錯誤?

+0

您可以顯示錯誤消息的內容嗎? – chirag90

+0

我猜'<?PHP'應該是'<?php' –

+0

它顯示了toast消息在錯誤偵聽器裏面..而不是執行on響應方法..錯誤偵聽器正在執行..看看uploadImage()函數 – MSD

回答

0

在你的onErrorResponseerror.printStackTrace()得到更多的信息關於它出錯的地方。我喜歡@pavneet_singh表示將<?PHP更改爲<?php

+0

'com.android.volley.toolbox.BasicNetwork.performRequest(BasicNetwork.java:169)''com.android.volley.NetworkDispatcher.run(NetworkDispatcher.java:113)' 我得到這個錯誤,不能圖出問題 – Prashant