

色々なサイトを見て、ソースコードを試してみましたがVolleyを使って画像をサーバーにアップロードできるものが見つかりませんした。

[code]

    public class MultipartRequest2 extends Request<String> {
    public static final String KEY_PICTURE = "mypicture";
    public static final String KEY_PICTURE_NAME = "filename";
    public static final String KEY_ROUTE_ID = "route_id";
    
    private HttpEntity mHttpEntity;
    
    private String mRouteId;
    private Response.Listener mListener;
    
    public MultipartRequest2(String url, String filePath, String routeId,
                             Response.Listener<String> listener,
                             Response.ErrorListener errorListener) {
        super(Method.POST, url, errorListener);
    
        mRouteId = routeId;
        mListener = listener;
        mHttpEntity = buildMultipartEntity(filePath);
    }
    
    public MultipartRequest2(String url, File file, String routeId,
                             Response.Listener<String> listener,
                             Response.ErrorListener errorListener) {
        super(Method.POST, url, errorListener);
    
        mRouteId = routeId;
        mListener = listener;
        mHttpEntity = buildMultipartEntity(file);
    }
    
    private HttpEntity buildMultipartEntity(String filePath) {
        File file = new File(filePath);
        return buildMultipartEntity(file);
    }
    
    private HttpEntity buildMultipartEntity(File file) {
        MultipartEntityBuilder builder = MultipartEntityBuilder.create();
        String fileName = file.getName();
        FileBody fileBody = new FileBody(file);
        builder.addPart(KEY_PICTURE, fileBody);
        builder.addTextBody(KEY_PICTURE_NAME, fileName);
        builder.addTextBody(KEY_ROUTE_ID, mRouteId);
        return builder.build();
    }
    
    @Override
    public String getBodyContentType() {
        return mHttpEntity.getContentType().getValue();
    }
    
    @Override
    public byte[] getBody() throws AuthFailureError {
        ByteArrayOutputStream bos = new ByteArrayOutputStream();
        try {
            mHttpEntity.writeTo(bos);
        } catch (IOException e) {
            VolleyLog.e("IOException writing to ByteArrayOutputStream");
        }
        return bos.toByteArray();
    }
    
    @Override
    protected Response<String> parseNetworkResponse(NetworkResponse response) {
        return Response.success("Uploaded", getCacheEntry());
    }
    
    @Override
    protected void deliverResponse(String response) {
        mListener.onResponse(response);
    }
    
[/code]

}

ネットで見つけたこのソースコードで画像をPOST送信でサーバーにアップロードしたいのですが、  
routeIdとはなんでしょうか？

サンプルでは

[code]

            HashMap<String, String> params = new HashMap<>();
    
        String url = "http://someone.jp/upload.php";
        String image_path = "/storage/sdcard/DCIM/Camera/IMG_20161026_182039.jpg";
    
        params.put("user", "username");
    
    
        MultipartRequest2 multipartRequest =
    
                new MultipartRequest2(url, image_path, params, new Response.Listener<String>() {
                    @Override
                    public void onResponse(String response) {
                        Log.e("TAG", "Success Response: " + response.toString());
    
                    }
                }, new Response.ErrorListener() {
    
                    @Override
                    public void onErrorResponse(VolleyError error) {
    
                        if (error.networkResponse != null) {
                            Log.e("TAG", "Error Response code: " +
                                    error.networkResponse.statusCode);
    
                            try {
                                dcimPath.setText("ギャラリーのPath:　"+"user");
    
                            }finally {
    
                            }
    
                        }
    
                            if (error instanceof NetworkError) {
                            } else if (error instanceof ServerError) {
                            } else if (error instanceof AuthFailureError) {
                            } else if (error instanceof ParseError) {
                            } else if (error instanceof NoConnectionError) {
                            } else if (error instanceof TimeoutError) {
                            }
                        }
                    });
    
                    mQueue.add(multipartRequest);
    
[/code]

となっていましたが、これだとエラーが出てオブジェクトが生成できませんでした。

どなたか教えてください。


CC BY-SA 3.0
2016-10-27T11:08:30.620
29940
2016-10-27T12:08:05.053
2016-10-27T11:44:57.687
15279
15279
question
android java android-volley
Volleyを使って画像をサーバーにアップロードする方法


自己解決しました。  
public static final String KEY_PICTURE = "mypicture";  
public static final String KEY_PICTURE_NAME = "filename";  
public static final String KEY_ROUTE_ID = "route_id";  
より

[code]

    ファイルは$_POST['mypicture']['tmpname']で取得可能
    文字列は$_POST['route_id']で取得可能という意味でした。
    
[/code]


CC BY-SA 3.0
2016-10-27T12:08:05.053
29941
2016-10-27T12:08:05.053
15279
29940
answer