【问题标题】:Which is the best way to upload multiple images to the server in android哪个是将多个图像上传到android中的服务器的最佳方式
【发布时间】:2016-07-20 20:08:43
【问题描述】:

我正在使用 okHttp 使用 multipartbody 将多个图像(在这种情况下超过 10 个)上传到服务器。 我和我的朋友发生了争执,我说的是在一个请求中上传所有图像。 他是说,上一张图片上传后,一次发送一个请求,然后上传下一张。 这样做是正确的,所以服务器工作得很快,不会发生超时。

【问题讨论】:

  • 如果您想一次将所有图像发送到服务器,请确保您在后台线程中执行此操作。如果您有批量图像要发送到服务器,一次只发送一个图像是一个坏主意,这并不意味着一次发送所有图像是一个好习惯。最好是 5 人一组发送
  • @Jois kk 但你能告诉我多部分是如何工作的吗?是一张一张的发送图片,还是请求失败,有没有办法获取最后一次发送成功的图片?
  • 你使用的是哪个库?
  • 它将不一一发送与该请求相关联的消息。你能收到最后一张图片吗

标签: java android okhttp


【解决方案1】:

您可以像下面这样发送 Base64 格式(字符串)并创建一个文本文件,其中包含所有编码的照片作为字符串

/**
     * Encodes the image to Base64.
     */
    private String encodeImage(String photoPath) {

        File imagefile = new File(photoPath);
        FileInputStream fis = null;
        try {
            fis = new FileInputStream(imagefile);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }

        Bitmap bm = BitmapFactory.decodeStream(fis);
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        bm.compress(Bitmap.CompressFormat.JPEG, 80, baos);
        byte[] b = baos.toByteArray();
        return Base64.encodeToString(b, Base64.DEFAULT);
    }

并使用 MultipartUtility 上传文件:

https://github.com/cloudinary/cloudinary_android/blob/master/Cloudinary/src/com/cloudinary/MultipartUtility.java

【讨论】:

  • Base64 编码将文件大小增加了大约 33%。所以我认为这不是一个好方法。
  • 你可以 Gzip 吗?
  • 哪个更好作为多部分请求中的文件发送或作为编码字符串发送??
  • 它基于您的需求/服务器实现。我想文件/编码都是最好的..你可以压缩编码的字符串,这样大小就会减小..!!
猜你喜欢
  • 2013-10-11
  • 2015-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-25
  • 2020-05-02
  • 1970-01-01
  • 2018-11-23
相关资源
最近更新 更多