如何使用流明通过android将图像文件上传到cloudinary

如何解决如何使用流明通过android将图像文件上传到cloudinary

我在Lumen中编写了一些代码以将图像上传到cloudinary,这些代码在使用邮递员进行测试时有效。

现在,我正尝试通过android应用程序而不是邮递员上传图片,但这由于某些原因而无法正常工作。

以下是我的Lumen应用程序中的图片上传代码

    $image_name = $request->file('picture')->getRealPath();
    
    $cloudder = Cloudder::upload($image_name,null,[
        'folder' => '/dog-lovers','discard_original_filename' => true,]);
    $uploadResult = $cloudder->getResult();
    $file_url = $uploadResult["url"];
    
    $input = $request->all();
    $input['picture'] = $file_url;
    $ad = Ad::create($input);
    return array('error'=>false,'message'=>'ad created successfully','data'=>$ad);

上面的代码在邮递员上测试时可以完美地工作。

然后我写了一些android代码,将图像从手机传递到流明

    uploadImage.setonClickListener(v -> {
        Intent getIntent = new Intent(Intent.ACTION_GET_CONTENT);
        getIntent.setType("image/*");

        Intent pickIntent = new Intent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
        pickIntent.setType("image/*");

        Intent chooserIntent = Intent.createChooser(getIntent,"Select Image");
        chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS,new Intent[] {pickIntent});

        startActivityForResult(chooserIntent,PICK_IMAGE);
    });

public void onActivityResult(int requestCode,int resultCode,Intent data) {
    super.onActivityResult(requestCode,resultCode,data);
    if (requestCode == PICK_IMAGE && resultCode == RESULT_OK && null != data) {
        Uri selectedImageUri = data.getData();
        picturePath = getPath(getApplicationContext(),selectedImageUri);
        Log.i("UploadAdActivity",picturePath);
        Toast.makeText(this,picturePath,Toast.LENGTH_LONG).show();
    }
}

public static String getPath(Context context,Uri uri ) {
    String result = null;
    String[] proj = { MediaStore.Images.Media.DATA };
    Cursor cursor = context.getContentResolver( ).query( uri,proj,null );
    if(cursor != null){
        if ( cursor.movetoFirst( ) ) {
            int column_index = cursor.getColumnIndexOrThrow( proj[0] );
            result = cursor.getString( column_index );
        }
        cursor.close( );
    }
    if(result == null) {
        result = "Not found";
    }
    return result;
}

protected Map<String,String> getParams() throws AuthFailureError {
                Map<String,String> params = new HashMap<>();
                params.put("picture",picturePath);
                return params;
            }

上面的代码不起作用,因为lumen应用程序无法使用提供的路径获取图像,我显然在某处犯了一个错误,但是我不知道它是什么,也不知道如何解决

如果有人可以解释该做什么/指出我在做什么错,这将真的很有帮助

解决方法

似乎您没有发送图像。在我们的日志中,我看到了Missing required parameter - file。 您可以尝试使用图片网址(例如https://res.cloudinary.com/demo/image/upload/v1561532539/sample.jpg)上传吗?

,

这可能对某人有用,我做错了几件事

  1. 我使用的是Volley String Request而不是Volley Multipart Request

    VolleyMultipartRequest multipartRequest = new VolleyMultipartRequest(Request.Method.POST,URLs.URL_UPLOAD_AD,
  2. 您需要使用ByteData传递图片/文件

    @Override
            protected Map<String,VolleyMultipartRequest.DataPart> getByteData() {
                Map<String,VolleyMultipartRequest.DataPart> params = new HashMap<>();
    
                long imageName = System.currentTimeMillis();
                params.put("picture",new DataPart(imageName + ".png",getFileDataFromDrawable(bitmap))); mCoverImage.getDrawable()),"image/jpeg"));
    
                return params;
            }
    
  3. 您需要使用以下标题设置标题

    @Override
                public Map<String,String> getHeaders() throws AuthFailureError {
                    HashMap<String,String> headers = new HashMap<String,String>();
                    return headers;
                }
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?