Autore Topic: Inviare foto a un server  (Letto 401 volte)

Offline cobraspirante

  • Nuovo arrivato
  • *
  • Post: 9
  • Respect: 0
    • Mostra profilo
Inviare foto a un server
« il: 03 Marzo 2015, 15:40:35 CET »
0
Salve a tutti voi, dovrei fare un app che fa una foto e la invia a un server php. Ho provato vari tutorial ma non riesco a fare funzionare nessuno di esso. Uno dei tutorial che ho trovato mi crasha quando lancio l'Async task per inviare la foto al server.Il problema è uin queste righe di codice
 
Codice: [Seleziona]
private String uploadFile() {
            String responseString = null;
 
            HttpClient httpclient = new DefaultHttpClient();
            HttpPost httppost = new HttpPost(Config.FILE_UPLOAD_URL);
 
             try {
                AndroidMultiPartEntity entity = new AndroidMultiPartEntity(
                        new ProgressListener() {
 
                            @Override
                            public void transferred(long num) {
                                publishProgress((int) ((num / (float) totalSize) * 100));
                            }
                        });
 
               File sourceFile = new File(filePath);
 
                // Adding file data to http body
                entity.addPart("image", new FileBody(sourceFile));
 
                // Extra parameters if you want to pass to server
                entity.addPart("website",
                        new StringBody("www.androidhive.info"));
                entity.addPart("email", new StringBody("abc@gmail.com"));
 
                totalSize = entity.getContentLength();
                httppost.setEntity(entity);
 
                // Making server call
                HttpResponse response = httpclient.execute(httppost);
                HttpEntity r_entity = response.getEntity();
 
                int statusCode = response.getStatusLine().getStatusCode();
                if (statusCode == 200) {
                    // Server response
                    responseString = EntityUtils.toString(r_entity);
                } else {
                    responseString = "Error occurred! Http Status Code: "
                            + statusCode;
                }
 
            } catch (ClientProtocolException e) {
                responseString = e.toString();
            } catch (IOException e) {
                responseString = e.toString();
            }
 
            return responseString;
 
        }

Vi posto anche il logcat




Offline GhostEnd

  • Nuovo arrivato
  • *
  • Post: 17
  • Respect: 0
    • Mostra profilo
Re:Inviare foto a un server
« Risposta #1 il: 10 Marzo 2015, 23:22:29 CET »
0
Io per caricarla uso questo codice:

Codice: [Seleziona]
@Override
    protected String doInBackground(String... arg0) {
        HttpURLConnection connection = null;
        DataOutputStream outputStream = null;

        String pathToOurFile = arg0[0];//inserisci la path del tuo file

        String urlServer = "http://indirizzo/inserisci_Immagine.php";
        String lineEnd = "\r\n";
        String twoHyphens = "--";
        String boundary =  "*****";

        int bytesRead, bytesAvailable, bufferSize;
        byte[] buffer;
        int maxBufferSize = 1*1024*1024;

        try
        {
            FileInputStream fileInputStream = new FileInputStream(new File(pathToOurFile) );

            URL url = new URL(urlServer);
            connection = (HttpURLConnection) url.openConnection();

            // Allow Inputs & Outputs.
            connection.setDoInput(true);
            connection.setDoOutput(true);
            connection.setUseCaches(false);

            // Set HTTP method to POST.
            connection.setRequestMethod("POST");

            connection.setRequestProperty("Connection", "Keep-Alive");
            connection.setRequestProperty("Content-Type", "multipart/form-data;boundary="+boundary);
            outputStream = new DataOutputStream( connection.getOutputStream() );

            outputStream.writeBytes(twoHyphens + boundary + lineEnd);
            outputStream.writeBytes("Content-Disposition: form-data; name=\"file_inviato\"; filename=\"" + pathToOurFile +"\"" + lineEnd);
            outputStream.writeBytes(lineEnd);

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

            // Read file
            bytesRead = fileInputStream.read(buffer, 0, bufferSize);

            while (bytesRead > 0)
            {
                outputStream.write(buffer, 0, bufferSize);
                bytesAvailable = fileInputStream.available();
                bufferSize = Math.min(bytesAvailable, maxBufferSize);
                bytesRead = fileInputStream.read(buffer, 0, bufferSize);
            }

            outputStream.writeBytes(lineEnd);
            outputStream.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd);

            // Responses from the server (code and message)
           int  serverResponseCode = connection.getResponseCode();
           String serverResponseMessage = connection.getResponseMessage();
            Log.i("Codice risposta", String.valueOf(serverResponseCode));
            Log.i("Messaggio risposta", serverResponseMessage);

            fileInputStream.close();
            outputStream.flush();
            outputStream.close();
        }
        catch (Exception ex)
        {
            Log.w("ECCEZIONE", ex.getMessage().toString());
        }
        return null;
    }

Offline cobraspirante

  • Nuovo arrivato
  • *
  • Post: 9
  • Respect: 0
    • Mostra profilo
Re:Inviare foto a un server
« Risposta #2 il: 11 Marzo 2015, 08:15:29 CET »
0
Grazie mille adesso va ;)