当前位置: 首页 > 面试题库 >

如何使用Volley库上传图像?

狄峻熙
2023-03-14
问题内容

我有一个图像,我想使用Volley库将该图像上传到我的Web服务,问题是我正在寻找一种方法,但仍然没有找到。

我找到了,但是对我不起作用:http : //develop-for-
android.blogspot.com.br/2014/01/using-volley-in-your-
application.html

我怎样才能做到这一点 ?

我正在尝试这个。

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK && null != data) {
        Uri selectedImage = data.getData();
        String[] filePathColumn = { MediaStore.Images.Media.DATA };

        Cursor cursor = getContentResolver().query(selectedImage,
                filePathColumn, null, null, null);
        cursor.moveToFirst();

        int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
        fotoPerfil = cursor.getString(columnIndex);
        cursor.close();

        ImageView imageView = (ImageView) findViewById(R.id.imgView);
        imageView.setImageBitmap(BitmapFactory.decodeFile(picturePath));

    }     
}

UploadoImageToServer upload = new UploadoImageToServer();   
ApplicationController app = new UsuarioDAO().insert(usuario, upload.upload(fotoPerfil, em[0]), new UsuarioAdapter(){
    @Override
    public void usuarioIsAdded(Boolean result){
        Log.i("Adicionou: ", result + "");
        progress.dismiss();
    }                   
});
CustomVolleySingleton.getInstance(getApplicationContext()).addToRequestQueue(app);

public class UploadoImageToServer {
    public String upload(String image,String nomeImagem){
        Bitmap bitmap = BitmapFactory.decodeFile(image);
        ByteArrayOutputStream stream = new ByteArrayOutputStream();
        bitmap.compress(Bitmap.CompressFormat.PNG, 90, stream); 
        byte [] byte_arr = stream.toByteArray();
        String image_str = Base64.encodeBytes(byte_arr);
        return image_str;               
    }
}

/** add an user and upload your foto(image) */
public ApplicationController insert(Usuario u, String uploadFile, final UsuarioAdapter listener) {
    boolean insert = false;

    HashMap<String, String> params = new HashMap<String, String>();
    params.put("nome", u.getNome());
    params.put("email", u.getEmail());
    params.put("senha", u.getSenha());      
    params.put("tipo", "usuarios");
    params.put("acao", "add");
    params.put("device_tipo", "android");
    params.put("device", AndroidReturnId.getAndroidId());
    params.put("uploadedfile", uploadFile);
    Log.i("URL: ", urlPost.toString());

    ApplicationController apc = new ApplicationController(Method.POST, urlPost.toString(), params,
        new Response.Listener<JSONObject>() {
            @Override
            public void onResponse(JSONObject obj) {
                try {
                    if(obj.getString("cod").equals("999")){                                                                             
                        listener.usuarioIsAdded(true);
                    }else{
                        listener.usuarioIsAdded(false);                                                     
                    }
                } catch (JSONException e) {                                                                     
                    e.printStackTrace();
                }
            }
        }, 
        new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError arg0) {
                Log.e("ERROR METHOD:", "insert in UsuarioDAO: " + arg0.getLocalizedMessage());
            }                                                                         
        });

    return apc;
}

问题答案:

我对排球不是很熟悉,但是尝试以下代码

// JSON请求

public MySampleImageUpload() { 
    JSONRequestResponse mResponse = new  
    JSONRequestResponse(mContext);

    Bundle parms = new Bundle();
    parms.putString("key_meail", "rojesh@demo.com");
    parms.setFile("key_url", image_path);

    mResponse.getResponse("sample_upload_data_url", REQUEST_CODE, this,
        parms);
}

//在SetFile和getResponse代码中

package com.fartogram.utils;

import java.io.File;

import org.json.JSONObject;

import android.content.Context;
import android.os.Bundle;

import com.android.volley.Request;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.examples.toolbox.MultipartRequest;
import com.android.volley.examples.toolbox.MyVolley;
import com.android.volley.toolbox.JsonObjectRequest;

public class JSONRequestResponse {

    public JSONRequestResponse(Context cntx) {
        mContext = cntx;
    }

    private final Context mContext;
    private int reqCode;
    private IParseListener listner;

    private boolean isFile = false;
    private String file_path = "", key = "";

    public void getResponse(String url, final int requestCode,
            IParseListener mParseListener) {
        getResponse(url, requestCode, mParseListener, null);
    }

    public void getResponse(String url, final int requestCode,
            IParseListener mParseListener, Bundle params) {
        this.listner = mParseListener;
        this.reqCode = requestCode;

        Response.Listener<JSONObject> sListener = new Response.Listener<JSONObject>() {
            @Override
            public void onResponse(JSONObject response) {
                if (listner != null) {
                    listner.SuccessResponse(response, reqCode);
                }
            }
        };

        Response.ErrorListener eListener = new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                if (listner != null) {
                    listner.ErrorResponse(error, reqCode);
                }
            }
        };

        if (!isFile) {
            JsonObjectRequest jsObjRequest = new JsonObjectRequest(
                Request.Method.GET, url, null, sListener,

eListener);
            MyVolley.getRequestQueue().add(jsObjRequest);
        } else {
                if (file_path != null) {
                    File mFile = new File(file_path);
                    MultipartRequest multipartRequest = 
    new MultipartRequest(url,eListener, sListener, key, mFile, params);
                MyVolley.getRequestQueue().add(multipartRequest);
            } 
        }
    }

    public boolean isFile() {
        return isFile;
    }


    public void setFile(String param, String path) {
        if (path != null && param != null) {
            key = param;
            file_path = path;
            this.isFile = true;
        }
    }

}

如果它适合您,请将其标记为正确:)



 类似资料:
  • 问题内容: 我正在尝试从HTML表单中将图像保存在数据库中。我已经编写了PHP代码来完成此任务。该程序不会生成任何错误消息,而且不会在MySQL数据库中插入图像数据。请检查一下。在这里,我分享了我的代码的摘录。 错误消息您的SQL语法错误;检查与您的MySQL服务器版本相对应的手册,以在第1行的’‘附近使用正确的语法 问题答案: 首先,您应该检查 图像列是否为BLOB类型 ! 我对您的SQL表一无

  • 我正在考虑在我的下一个项目中实现Android Volley库(关于Volley的Google IO演示)。 然而,我还没有找到任何用于该库的严肃API。 我如何上传文件、发送/获取请求,以及使用Volley将Gson解析器添加为解析器? 源代码

  • 我试图通过AJAX Laravel(jquery AJAX)发送图像上传。我总是收到空的$_files数组。我在Form中添加了enctype=“multipart/form-data。当我通过Laravel的post方法发送数据时,我得到了我的数据。这不适用于jquery ajax。我得到的是除了$_文件之外我发送的其他东西的ajax响应。

  • 问题内容: 我正在尝试使用jQuery和Ajax函数上传图像,以及如何获取图像文件的所有详细信息,例如我们使用的php 这是我的代码 JS 控制者 视图 响应 C:\ fakepath \ Koala.jpg您没有选择要上传的文件。 请帮忙 问题答案: 您可以在html5中使用FormData API。 您的表格必须是: 然后jQuery: 然后,在控制器中,您将获得数组中的文件。

  • 问题内容: 我只想使用swift在firebase上上传多个图像。我现在正在上传一张图片,但无法上传多张图片。这是我的代码 问题答案: 当前没有直接API可以批量上传/下载文件。我们不能使用循环,因为所有任务都执行。我们可以做的是使用递归函数。 核心逻辑 完整代码示例 1.我创建了一个自定义类来上传文件 2.在这里我们如何使用 首先,为主要功能创建一个完成块,当您成功上传所有图像时,它将通知您。