首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Android中打开图像并将其设置为文件,然后在Json中发送

在Android中打开图像并将其设置为文件,然后在Json中发送
EN

Stack Overflow用户
提问于 2015-07-06 13:53:49
回答 1查看 437关注 0票数 0

好的,我要做的是打开一个图像,在一个图像视图中设置它,并使它成为一个文件,以便使用volley在一个多部分形式的请求中发送它,现在我正在使用PostMan向我的服务器发出Http请求(字符串和文件),它工作正常,但我不能在安卓中实现它,到目前为止,我所拥有的是这样的

代码语言:javascript
复制
public void onClick(View v) {
    if(v == banner){
        Intent intent = new Intent();
        //Verified the android version
        if(Build.VERSION.SDK_INT < 19){

            intent.setAction(Intent.ACTION_GET_CONTENT);
        } else{
            //KitKat 4.4 o superior
            intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
            intent.addCategory(Intent.CATEGORY_OPENABLE);
        }
        intent.setType("image/*");
        startActivityForResult(intent, request_code);
    }
}

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if(resultCode == Activity.RESULT_OK && requestCode == request_code) {
        uri = data.getData();
        banner.setImageURI(uri);
        //TAG for store the Uri to the selected file
        banner.setTag(uri);
        path = uri.getPath();
        fileImage = new File (path);
        Toast.makeText(this,path,Toast.LENGTH_LONG).show();}

其中banner是我的图像视图,fileImage是我的文件

代码语言:javascript
复制
MultipartRequest myRequest = new MultipartRequest(
            "MY_URL",
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    VolleyLog.e("error");
                }
            },
            new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    VolleyLog.e(response);
                }
            },
            fileImage,
            params
    );

我正在使用在另一个问题中回答的这个类。

代码语言:javascript
复制
public class MultipartRequest extends Request<String> {

//private MultipartEntity entity = new MultipartEntity();

MultipartEntityBuilder entity = MultipartEntityBuilder.create();
HttpEntity httpentity;
private static final String FILE_PART_NAME = "banner";

private final Response.Listener<String> mListener;
private final File mFilePart;
private final Map<String, String> mStringPart;

public MultipartRequest(String url, Response.ErrorListener errorListener,
                        Response.Listener<String> listener,
                        File file,
                        Map<String, String> mStringPart) {
    super(Method.POST, url, errorListener);

    mListener = listener;
    mFilePart = file;
    this.mStringPart = mStringPart;
    entity.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
    buildMultipartEntity();
}

public void addStringBody(String param, String value) {
    mStringPart.put(param, value);
}

private void buildMultipartEntity() {
    entity.addPart(FILE_PART_NAME, new FileBody(mFilePart));
    for (Map.Entry<String, String> entry : mStringPart.entrySet()) {
        entity.addTextBody(entry.getKey(), entry.getValue());
    }
}

@Override
public String getBodyContentType() {
    return httpentity.getContentType().getValue();
}

@Override
public byte[] getBody() throws AuthFailureError {
    ByteArrayOutputStream bos = new ByteArrayOutputStream();
    try {
        httpentity = entity.build();
        httpentity.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);
}

}

但它返回错误"IOException writing to ByteArrayOutputStream“

EN

Stack Overflow用户

发布于 2015-07-06 15:35:44

如果您的目标只是将图像保存到文件中,请查看这篇文章,您需要首先将接收到的图像转换为位图,然后只需遵循that帖子中的内容

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31238567

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档