2015-09-20 18 views
0

我很新的排球,我想用它做我與郵差在這裏做下同任務:排球 - 如何上傳圖片文件作爲參數

Postman Simulation

基本上它是對某個網頁的發佈請求,其中身體內部有一個名爲image的參數,其中包含一個圖像文件。

謝謝!

回答

0

這裏是你需要的代碼。

public class PhotoMultipartRequest<T> extends Request<T> { 


private static final String FILE_PART_NAME_1 = "file1"; 

private MultipartEntityBuilder mBuilder = MultipartEntityBuilder.create(); 
private final Response.Listener<T> mListener; 
private final File mImageFile1 
protected Map<String, String> headers; 

public PhotoMultipartRequest(String url, ErrorListener errorListener, Listener<T> listener, File imageFile1) { 
    super(Method.POST, url, errorListener); 

    mListener = listener; 
    mImageFile1 = imageFile1; 


    buildMultipartEntity(); 
} 

@Override 
public Map<String, String> getHeaders() throws AuthFailureError { 
    Map<String, String> headers = super.getHeaders(); 

    if (headers == null 
      || headers.equals(Collections.emptyMap())) { 
     headers = new HashMap<String, String>(); 
    } 

    headers.put("test", "multipart/form-data"); 


    return headers; 
} 

private void buildMultipartEntity() { 
    mBuilder.addBinaryBody(FILE_PART_NAME_1, mImageFile1, ContentType.create("image/jpeg"), mImageFile1.getName()); 

    mBuilder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE); 
    mBuilder.setLaxMode().setBoundary("xx").setCharset(Charset.forName("UTF-8")); 
} 

@Override 
public String getBodyContentType() { 
    String contentTypeHeader = mBuilder.build().getContentType().getValue(); 
    return contentTypeHeader; 
} 

@Override 
public byte[] getBody() throws AuthFailureError { 
    ByteArrayOutputStream bos = new ByteArrayOutputStream(); 
    try { 
     mBuilder.build().writeTo(bos); 
    } catch (IOException e) { 
     VolleyLog.e("IOException writing to ByteArrayOutputStream bos, building the multipart request."); 
    } 

    return bos.toByteArray(); 
} 

@Override 
protected Response<T> parseNetworkResponse(NetworkResponse response) { 
    T result = null; 
    return Response.success(result, HttpHeaderParser.parseCacheHeaders(response)); 
} 

@Override 
protected void deliverResponse(T response) { 
    mListener.onResponse(response); 
    } 
}