2012-01-04 11 views
42

Desidero aggiungere un file immagine nell'oggetto json. È possibile aggiungere il file immagine nell'oggetto json?Come posso aggiungere un file immagine nell'oggetto json?

Ho provato sotto il codice ma non funziona? Poiché voglio inviare quell'oggetto json al server, il server leggerà il mio file di immagine e lo memorizzerà in quel database.

JSONObject test = new JSONObject(); 
test.put("photo",new File(// Here i set image uri)); 

Così quando stampo questo oggetto json, mi mostra solo il percorso dell'immagine in cui è memorizzata l'immagine. Voglio file per inviarlo al server.

+0

io non lo trovo vaga ... è solo semplice. Sta solo chiedendo come potrebbe aggiungere questi dati a un oggetto JSON. –

+0

È Java che stai usando? Come potrei farlo nel testo di JSON dritto? – AllTradesJack

risposta

6

Si sta solo aggiungendo l'oggetto File all'oggetto JSON. L'oggetto File contiene solo informazioni meta relative al file: percorso, nome e così via.

È necessario caricare l'immagine e leggerne i byte. Quindi inserisci questi byte nell'oggetto JSON.

+2

Grazie per la risposta. puoi darmi il semplice esempio di così posso riferirlo. –

+1

Hai mai avuto un esempio o puoi pubblicare i tuoi, sto trattando questo problema al momento. – Lion789

1
public class UploadToServer extends Activity { 

TextView messageText; 
Button uploadButton; 
int serverResponseCode = 0; 
ProgressDialog dialog = null; 

String upLoadServerUri = null; 

/********** File Path *************/ 
final String uploadFilePath = "/mnt/sdcard/"; 
final String uploadFileName = "Quotes.jpg"; 

@Override 
public void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_upload_to_server); 

    uploadButton = (Button) findViewById(R.id.uploadButton); 
    messageText = (TextView) findViewById(R.id.messageText); 

    messageText.setText("Uploading file path :- '/mnt/sdcard/" 
      + uploadFileName + "'"); 

    /************* Php script path ****************/ 
    upLoadServerUri = "http://192.1.1.11/hhhh/UploadToServer.php"; 

    uploadButton.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      dialog = ProgressDialog.show(UploadToServer.this, "", 
        "Uploading file...", true); 

      new Thread(new Runnable() { 
       public void run() { 
        runOnUiThread(new Runnable() { 
         public void run() { 
          messageText.setText("uploading started....."); 
         } 
        }); 

        uploadFile(uploadFilePath + "" + uploadFileName); 

       } 
      }).start(); 
     } 
    }); 
} 

public int uploadFile(String sourceFileUri) { 

    String fileName = sourceFileUri; 

    HttpURLConnection connection = null; 
    DataOutputStream dos = null; 
    String lineEnd = "\r\n"; 
    String twoHyphens = "--"; 
    String boundary = "*****"; 
    int bytesRead, bytesAvailable, bufferSize; 
    byte[] buffer; 
    int maxBufferSize = 1 * 1024 * 1024; 
    File sourceFile = new File(sourceFileUri); 

    if (!sourceFile.isFile()) { 

     dialog.dismiss(); 

     Log.e("uploadFile", "Source File not exist :" + uploadFilePath + "" 
       + uploadFileName); 

     runOnUiThread(new Runnable() { 
      public void run() { 
       messageText.setText("Source File not exist :" 
         + uploadFilePath + "" + uploadFileName); 
      } 
     }); 

     return 0; 

    } else { 
     try { 

      // open a URL connection to the Servlet 
      FileInputStream fileInputStream = new FileInputStream(
        sourceFile); 
      URL url = new URL(upLoadServerUri); 

      // Open a HTTP connection to the URL 
      connection = (HttpURLConnection) url.openConnection(); 
      connection.setDoInput(true); // Allow Inputs 
      connection.setDoOutput(true); // Allow Outputs 
      connection.setUseCaches(false); // Don't use a Cached Copy 
      connection.setRequestMethod("POST"); 
      connection.setRequestProperty("Connection", "Keep-Alive"); 
      connection.setRequestProperty("ENCTYPE", "multipart/form-data"); 
      connection.setRequestProperty("Content-Type", 
        "multipart/form-data;boundary=" + boundary); 
      connection.setRequestProperty("uploaded_file", fileName); 

      dos = new DataOutputStream(connection.getOutputStream()); 

      dos.writeBytes(twoHyphens + boundary + lineEnd); 
      // dos.writeBytes("Content-Disposition: form-data; name=\"uploaded_file\";filename=\"" 
      // + fileName + "\"" + lineEnd); 
      dos.writeBytes("Content-Disposition: post-data; name=uploadedfile;filename=" 
        + URLEncoder.encode(fileName, "UTF-8") + lineEnd); 

      dos.writeBytes(lineEnd); 

      // create a buffer of maximum size 
      bytesAvailable = fileInputStream.available(); 

      bufferSize = Math.min(bytesAvailable, maxBufferSize); 
      buffer = new byte[bufferSize]; 

      // read file and write it into form... 
      bytesRead = fileInputStream.read(buffer, 0, bufferSize); 

      while (bytesRead > 0) { 

       dos.write(buffer, 0, bufferSize); 
       bytesAvailable = fileInputStream.available(); 
       bufferSize = Math.min(bytesAvailable, maxBufferSize); 
       bytesRead = fileInputStream.read(buffer, 0, bufferSize); 

      } 

      // send multipart form data necesssary after file data... 
      dos.writeBytes(lineEnd); 
      dos.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd); 

      // Responses from the server (code and message) 
      int serverResponseCode = connection.getResponseCode(); 
      String serverResponseMessage = connection.getResponseMessage(); 

      Log.i("uploadFile", "HTTP Response is : " 
        + serverResponseMessage + ": " + serverResponseCode); 

      if (serverResponseCode == 200) { 

       runOnUiThread(new Runnable() { 
        public void run() { 

         String msg = "File Upload Completed.\n\n See uploaded file here : \n\n" 
           + " http://www.androidexample.com/media/uploads/" 
           + uploadFileName; 

         messageText.setText(msg); 
         Toast.makeText(UploadToServer.this, 
           "File Upload Complete.", Toast.LENGTH_SHORT) 
           .show(); 
        } 
       }); 
      } 

      // close the streams // 
      fileInputStream.close(); 
      dos.flush(); 
      dos.close(); 

     } catch (MalformedURLException ex) { 

      dialog.dismiss(); 
      ex.printStackTrace(); 

      runOnUiThread(new Runnable() { 
       public void run() { 
        messageText 
          .setText("MalformedURLException Exception : check script url."); 
        Toast.makeText(UploadToServer.this, 
          "MalformedURLException", Toast.LENGTH_SHORT) 
          .show(); 
       } 
      }); 

      Log.e("Upload file to server", "error: " + ex.getMessage(), ex); 
     } catch (Exception e) { 

      dialog.dismiss(); 
      e.printStackTrace(); 

      runOnUiThread(new Runnable() { 
       public void run() { 
        messageText.setText("Got Exception : see logcat "); 
        Toast.makeText(UploadToServer.this, 
          "Got Exception : see logcat ", 
          Toast.LENGTH_SHORT).show(); 
       } 
      }); 
      Log.e("Upload file to server Exception", 
        "Exception : " + e.getMessage(), e); 
     } 
     dialog.dismiss(); 
     return serverResponseCode; 

    } // End else block 
} 

PHP FILE

<?php 
$target_path = "./Upload/"; 
$target_path = $target_path . basename($_FILES['uploadedfile']['name']); 
if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) { 
echo "The file ". basename($_FILES['uploadedfile']['name']). 
" has been uploaded"; 
} else{ 
echo "There was an error uploading the file, please try again!"; 
} 
?> 
Problemi correlati