Ho cercato nel web ma ho trovato solo il codice relativo ai dati di moduli multipart, non la spiegazione di cosa sono e come vengono utilizzati?Che cosa sono esattamente MultiPartEntity e Dati modulo? Come vengono utilizzati per caricare immagini in Android?
risposta
Normalmente Stiamo inviando solo una parte stringa di dati, mentre nella parte del file multipart viene aggiunto con la stringa, quindi la sua chiamata esempio multipart.for Siamo in grado di inviare dati a più parti utilizzando volley
public class MultipartReq extends JsonObjectRequest {
private static final String FILE_PART_NAME = "file";
private static final String STRING_PART_NAME = "text";
private final File mFilePart;
//private final String mStringPart;
MultipartEntityBuilder entityBuilder = MultipartEntityBuilder.create();
HttpEntity httpEntity;
Context context;
private Map<String, String> params;
public MultipartReq(Context context, int method, String url, JSONObject jsonRequest, Response.Listener<JSONObject> listener, Response.ErrorListener errorListener, File file, Map<String, String> params) {
super(method, url, jsonRequest, listener, errorListener);
this.context = context;
mFilePart = file;
entityBuilder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
this.params = params;
buildMultipartEntity();
httpEntity = entityBuilder.build();
}
private void buildMultipartEntity() {
try {
if (mFilePart.exists()) { entityBuilder.addBinaryBody(FILE_PART_NAME, mFilePart, ContentType.create(mimeType), mFilePart.getName());
}
try {
if(!params.isEmpty()){
for (String key: params.keySet()){
entityBuilder.addPart(key, new StringBody(params.get(key),ContentType.TEXT_PLAIN));
}
}
} catch (Exception e) {
VolleyLog.e("UnsupportedEncodingException");
}
} else {
ShowLog.e("no such file");
}
} catch (Exception e) {
ShowLog.e("UnsupportedEncodingException");
}
}
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
HashMap<String, String> params = new HashMap<String, String>();
return params;
}
@Override
public String getBodyContentType() {
return httpEntity.getContentType().getValue();
}
@Override
public byte[] getBody() {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
try {
httpEntity.writeTo(bos);
} catch (IOException e) {
VolleyLog.e("IOException writing to ByteArrayOutputStream");
}
return bos.toByteArray();
}
@Override
protected void deliverResponse(JSONObject response) {
super.deliverResponse(response);
}
}
Hey grazie ... sono in grado di implementarlo ora –
Non ho dimenticato di accettare la mia risposta se è stato aiutato –
Converti bitmap in byte [ ] using-
public static byte[] bitmapToBlob(Bitmap bitmap) {
if (bitmap == null) {
return null;
}
Log.w("bitmapToBlob", "bitmap getHeight = " + bitmap.getHeight());
Log.w("bitmapToBlob", "bitmapgetWidth = " + bitmap.getWidth());
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG,
Some_value_0_to_100, baos);
return baos.toByteArray();
}
Usare questa funzione per caricare un'immagine come byte []
private static void postToUrl3(String url_to_upload_on,
String file_name_with_ext, byte[] byteArray) {
CloseableHttpClient httpClient = null;
try {
httpClient = HttpClientBuilder.create().build();
HttpPost postRequest = new HttpPost(url_to_upload_on);
MultipartEntityBuilder reqEntity = MultipartEntityBuilder.create();
reqEntity.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
ByteArrayBody bab = new ByteArrayBody(byteArray, file_name_with_ext);
reqEntity.addPart("file", bab);
postRequest.setEntity(reqEntity.build());
httpClient.execute(postRequest);// takes time
} catch (Exception e) {
Log.w("uploadToBlobStore", "postToUrl Exception e = " + e);
e.printStackTrace();
} finally {
if (httpClient != null) {
Log.w("uploadToBlobStore", "connection.closing ");
try {
httpClient.close();
} catch (IOException e) {
Log.w("uploadToBlobStore", "connection.closing errot e = "
+ e);
e.printStackTrace();
}
}
}
}
Modifica 1-
I dati multipart/form vengono utilizzati in html per inviare dati con più parti (come suggerisce il nome). Qualsiasi tipo di dati può essere aggiunto ad esso. stringa, file, ecc. MultiPartEntity è il calss che dosa la stessa cosa su java. È possibile aggiungere più parti di dati a questa entità, ad esempio reqEntity.addPart("Id", new StringBody("ID"));
o qualsiasi altro tipo di corpo.
MA vedere quello a cui mai server che si sta inviando questo, quel server dovrebbe funzionare accordingly.I dire se si utilizza reqEntity.addPart("Id", new StringBody("ID"));
il server dovrebbe essere alla ricerca di un campo con il nome "Id" e fare qualche cosa con esso. il server può anche dare una risposta se configurato per farlo it.You possono ottenere risposta utilizzando HttpResponse response = httpClient.execute(postRequest);
sviluppatori
PS-Compagni si prega di modificare e migliorare la mia risposta in modo che io possa sapere di più troppo, o se io sono errati
grazie..le cose sono un po 'chiare ora –
- 1. Android - getTargetFragment e setTargetFragment - Che cosa sono utilizzati per
- 2. Cosa sono i moduli di unione e come vengono utilizzati?
- 3. Per cosa vengono utilizzati Apache Thrift e Google Protocol Buffers?
- 4. Per cosa sono utilizzati index.ts?
- 5. Android - MultipartEntity e dipendenze
- 6. Che cosa sono utilizzati __signature__ e __text_signature__ in Python 3.4
- 7. Che cosa sono i database NoSql Key/Value utilizzati per
- 8. Che cosa sono esattamente com.sec.android.provider. * App?
- 9. Cosa sono i registri ombra in MIPS e come vengono utilizzati?
- 10. Che cosa sono https e SSL? Come funzionano? Come possono essere utilizzati in PHP?
- 11. Che cosa sono i "dati urgenti"?
- 12. Che cosa sono i 'dati' in window.history.replaceState
- 13. Cosa sono esattamente le stringhe in Nim?
- 14. Che cosa fa esattamente `-rdynamic` e quando è esattamente necessario?
- 15. Che cosa significa esattamente "astrazione dati"?
- 16. Come vengono utilizzati i margini e il riempimento in FireMonkey?
- 17. Per cosa vengono utilizzati i componenti fortemente connessi?
- 18. Che cosa fa esattamente pg_escape_string?
- 19. per cosa sono utilizzati @Repository e @Autowired. (Primavera)
- 20. Che cosa sono i file .dex in Android?
- 21. Che cosa sono widthMeasureSpec e heightMeasureSpec in Visualizzazioni personalizzate Android?
- 22. Dove vengono memorizzate le immagini e i contenitori di ancoraggio quando vengono utilizzati con Windows?
- 23. Cosa sono esattamente i "spin-lock"?
- 24. Cosa sono esattamente i "servizi WPF"?
- 25. Che cosa è esattamente OData?
- 26. Che cosa include esattamente currentDesign.writeCssincludes?
- 27. Che cosa fa esattamente l'operatore ==?
- 28. Che cosa esattamente willMoveToParentViewController: e didMoveToParentViewController: do?
- 29. Che cosa è esattamente Kafka Rebalancing?
- 30. Che cosa significa esattamente "chiusura"?
In ' Dati in formato multiparto 'è possibile inviare dati con 'String',' File' e 'Byte'too. Ha i suoi diversi tipi di parti del corpo tra cui 'StringBodyPart',' FileBodyPart', 'ByteArrayBodyPart()' ecc ecc. Ha anche un limite limitato per impostare anche i tuoi dati. Questa è la comprensione di base per te! – Piyush
Scusa..per la risposta tardiva ... puoi anche spiegare come multiPartEntity è diverso da dati MultiPart Form –
Entità MultiPart significa che puoi inviare dati in gruppo con diversi parametri del corpo come String, File e Byte ecc. Anche quando vedi codice demo quindi puoi capire di più! – Piyush