1

Je reçois l'image du profil en tant qu'Uri de Google et je veux maintenant envoyer cette image sur un autre serveur.Uri to Bitmap Édition

Donc, voici la classe que j'utilise pour le même.

MultipartUtility.java

public class MultipartUtility { 
    private final String boundary; 
    private static final String LINE_FEED = "\r\n"; 
    private HttpURLConnection httpConn; 
    private String charset; 
    private OutputStream outputStream; 
    private PrintWriter writer; 

    /** 
    * This constructor initializes a new HTTP POST request with content type 
    * is set to multipart/form-data 
    * 
    * @param requestURL 
    * @param charset 
    * @throws IOException 
    */ 
    public MultipartUtility(String requestURL, String charset) 
      throws IOException { 
     this.charset = charset; 

     // creates a unique boundary based on time stamp 
     boundary = "===" + System.currentTimeMillis() + "==="; 
     URL url = new URL(requestURL); 
     httpConn = (HttpURLConnection) url.openConnection(); 
     httpConn.setUseCaches(false); 
     httpConn.setDoOutput(true); // indicates POST method 
     httpConn.setDoInput(true); 
     httpConn.setRequestProperty("Content-Type", 
       "multipart/form-data; boundary=" + boundary); 
     outputStream = httpConn.getOutputStream(); 
     writer = new PrintWriter(new OutputStreamWriter(outputStream, charset), 
       true); 
    } 

    /** 
    * Adds a form field to the request 
    * 
    * @param name field name 
    * @param value field value 
    */ 
    public void addFormField(String name, String value) { 
     writer.append("--" + boundary).append(LINE_FEED); 
     writer.append("Content-Disposition: form-data; name=\"" + name + "\"") 
       .append(LINE_FEED); 
     writer.append("Content-Type: text/plain; charset=" + charset).append(
       LINE_FEED); 
     writer.append(LINE_FEED); 
     writer.append(value).append(LINE_FEED); 
     writer.flush(); 
    } 

    /** 
    * Adds a upload file section to the request 
    * 
    * @param fieldName name attribute in <input type="file" name="..." /> 
    * @param uploadFile a File to be uploaded 
    * @throws IOException 
    */ 
    public void addFilePart(String fieldName, File uploadFile) 
      throws IOException { 
     String fileName = uploadFile.getName(); 
     writer.append("--" + boundary).append(LINE_FEED); 
     writer.append(
       "Content-Disposition: form-data; name=\"" + fieldName 
         + "\"; filename=\"" + fileName + "\"") 
       .append(LINE_FEED); 
     writer.append(
       "Content-Type: " 
         + URLConnection.guessContentTypeFromName(fileName)) 
       .append(LINE_FEED); 
     writer.append("Content-Transfer-Encoding: binary").append(LINE_FEED); 
     writer.append(LINE_FEED); 
     writer.flush(); 

     FileInputStream inputStream = new FileInputStream(uploadFile); 
     byte[] buffer = new byte[4096]; 
     int bytesRead = -1; 
     while ((bytesRead = inputStream.read(buffer)) != -1) { 
      outputStream.write(buffer, 0, bytesRead); 
     } 
     outputStream.flush(); 
     inputStream.close(); 
     writer.append(LINE_FEED); 
     writer.flush(); 
    } 

    /** 
    * Adds a header field to the request. 
    * 
    * @param name - name of the header field 
    * @param value - value of the header field 
    */ 
    public void addHeaderField(String name, String value) { 
     writer.append(name + ": " + value).append(LINE_FEED); 
     writer.flush(); 
    } 

    /** 
    * Completes the request and receives response from the server. 
    * 
    * @return a list of Strings as response in case the server returned 
    * status OK, otherwise an exception is thrown. 
    * @throws IOException 
    */ 
    public List<String> finish() throws IOException { 
     List<String> response = new ArrayList<String>(); 
     writer.append(LINE_FEED).flush(); 
     writer.append("--" + boundary + "--").append(LINE_FEED); 
     writer.close(); 

     // checks server's status code first 
     int status = httpConn.getResponseCode(); 
     if (status == HttpURLConnection.HTTP_OK) { 
      BufferedReader reader = new BufferedReader(new InputStreamReader(
        httpConn.getInputStream())); 
      String line = null; 
      while ((line = reader.readLine()) != null) { 
       response.add(line); 
      } 
      reader.close(); 
      httpConn.disconnect(); 
     } else { 
      throw new IOException("Server returned non-OK status: " + status); 
     } 
     return response; 
    } 
} 

Callback:

MultipartUtility multipart = new MultipartUtility(url, "UTF-8"); 
      multipart.addFormField("token", token); 
      multipart.addFormField("user_id", userid); 
      multipart.addFormField("email", email); 
      multipart.addFormField("name", name); 
      multipart.addFilePart("image", folder); 

Suite est l'erreur que je reçois: java.io.FileNotFoundException: https: /lh5.googleusercontent .com/-IsN40fH-ld4/AAAAAAAAAAI/AAAAAAAAAAA/AAomvV1zuROxSSb-oMcEht44cCMEXmZQiw/s96-c/photo.jpg: ouvert a échoué: ENOENT (Aucun fichier ou répertoire)

Image File je vous envoie au serveur: https: /lh5.googleusercontent.com/-IsN40fH-ld4/AAAAAAAAAAI/AAAAAAAAAAA/AAomvV1zuROxSSb-oMcEht44cCMEXmZQiw/s96 -c/photo.jpg

Aidez-moi s'il vous plaît.

+0

Vous pouvez également stocker votre image sous forme de chaîne 64 bits. –

+0

@AtifAbbAsi je veux envoyer sous forme de jpg/png. –

+2

d'abord vous devez télécharger cette image Après que peut envoyer cette image vers un autre serveur. –

Répondre

0

traitement Êtes-vous votre dossier de fichier comme ci-dessous -

File folder =null; 
folder = new File(Environment.getExternalStorageDirectory().getAbsolutePath()+"/"+"name.png"); 
FileOutputStream fos = new FileOutputStream(folder); 
bmp.compress(Bitmap.CompressFormat.PNG,90,fos); 

essayer d'ajouter ces lignes.

+0

Je reçois l'image du serveur. –

+0

Ensuite, essayez d'enregistrer l'image en premier et obtenir l'image, le convertir au format de fichier, puis l'envoyer au serveur. –

0

Essayez de lire ce didacticiel.! Image Uri To Bitmap

+0

essayé de ne pas travailler –

+0

Je ne veux pas mettre en imageview. Je veux envoyer au serveur. –

+0

http://stackoverflow.com/questions/12796579/how-to-send-image-bitmap-to-server-in-android-with-multipart-form-data-json essayer thi slink –