当前位置: 首页 > 知识库问答 >
问题:

通过改装将位图图像上传到服务器

连德水
2023-03-14

我必须上传从用户首选的应用程序(Cameta,画廊等)选择后的图像文件。我可以在Imageview中显示结果意图为位图。现在我想上传这个图像后,一个按钮将被点击。我用改装来做到这一点。我跟随ImagePicker类将图像收集到我的Imageview中。

正在收集图像代码:

CircleImageView imageViewProfile_Picture;

public void onPickImage(View view) {
    Intent chooseImageIntent = ImagePicker.getPickImageIntent(this);
    startActivityForResult(chooseImageIntent, PICK_IMAGE_ID);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    switch (requestCode) {
        case PICK_IMAGE_ID:
            Bitmap bitmap = ImagePicker.getImageFromResult(this, resultCode, data);
            // TODO collect picture and show in Imageview
            imageViewProfile_Picture.setImageBitmap(bitmap);
            break;
        default:
            super.onActivityResult(requestCode, resultCode, data);
            break;
    }
}

要将图像上载到服务器,我使用改装库

// How to get the file object from bitmap 

File file=null;

    RequestBody reqFile = RequestBody.create(MediaType.parse("image/*"), file);
    MultipartBody.Part body = MultipartBody.Part.createFormData("upload", file.getName(), reqFile);

API接口

    @Multipart
@POST("/taxiapi/api?")
Call<SignUpResponse> signup(@Part("user_name") RequestBody user_name,
                            @Part("name") RequestBody name,
                            @Part("password") RequestBody password,
                            @Part("action") RequestBody action,
                            @Part("email") RequestBody email,
                            @Part("phone") RequestBody phone,
                            @Part("icard") RequestBody icard,
                            @Part MultipartBody.Part image,
                            @Part("profile_picture") RequestBody pic_name);

我的问题是,在将result intent中的Imageview设置为在服务器中上载所选图片之后,如何从该场景中获取文件obejct?

共有1个答案

尹超
2023-03-14

试试用这个

String[] projection = { MediaStore.Images.Media.DATA };
Cursor cursor = getActivity().managedQuery(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, projection, null, null, null);
int column_index_data = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToLast();
String photoPath =  cursor.getString(column_index_data);

PhotoPath将包含相机捕获的最后图像的路径。

然后File=new File(photoPath);

 类似资料:
  • 我目前正在做一个个人项目,我想上传一张个人资料图片到我的服务器上。通过以表单数据的形式发送图像,我可以轻松地将图像发送到带有postman的服务器上,但当我对其进行相同的改造时,它不起作用,有时它会创建一个1kb的文件,在打开时显示错误。 如果我提供文件到请求Body.create喜欢, 设置新配置文件pic的代码不会执行,如果我只传递URI。getPath()输入。create()方法id在服务

  • 问题内容: 我想随请求一起发送图像作为参数。我使用下面的代码调用POST请求,但是我不知道如何将图像追加到正文中。 我通过图像选择器获取图像,如下所示: 我的要求如下 我是Swift的新手。我已经通过multipart / form-data看到了这一点,但无法自己实现。我不想将其编码为基本64格式。请帮助我。 问题答案: 我使用以下结构发送图像: 然后在函数中创建如下主体:

  • 我正在用Laravel5.6构建一个表单,在其中我保存了一个名字和一个用户照片,但我需要将照片与用户名一起存储。我展示了我商店的代码 我可以使用$request->nombre获得用户名; 但我不知道怎么给照片取名字

  • 我已经写了下面的代码来做到这一点 - :) 当我从Postman或soap UI工具调用下面的URL时,通过传递所有必需的详细信息,而不是它在数据库中成功存储字节数组,但输入流对象中的字节数组是不正确的,因为如果我在图像文件中转换该字节数组也比该图像文件,我无法打开。 请建议我任何其他事情,我可以做来实现这个.help将是非常可观的。 谢谢。

  • 我正在通过我的Rails4应用程序中的CarrierWave将图像上传到AWS3的桶中。我也有Cloudfront设置,它目前为我的所有statis资产提供服务(不包括公共上传)。 我如何通过Cloudfront而不是S3服务上传的图像,即使它们存储在S3桶中?我已经找到了这样的教程,但是由于我已经有一个CloudFront发行版在运行,我想知道是否应该为我的公共映像上载添加另一个,或者有没有一种

  • 问题内容: 我需要即时将画布图像数据上传到服务器(数据库),即,我需要创建一个带有input=file的表单,并在没有任何用户交互的情况下发布图像数据。 问题答案: 您不需要文件输入,只需使用Ajax 获取数据并将其发布到服务器即可。 请参阅MDN文档。 但是即使使用,您也无法在IE中获取图像数据。