在 Java 中解码 Base64 百分比编码的图像字符串

Decode Base64 percentage encoded Image String in Java

朋友,

我必须将图像从 IOS 上传到 Java 网络服务器。因此,我的 IOS 程序将图像编码为 Base64 图像格式并对其进行编码,以删除特殊字符的任何问题,如下所示。

    let imageData = UIImageJPEGRepresentation(myImageView.image!, 0.5)
    let base64String = imageData!.base64EncodedStringWithOptions([])
    let encodeImg = base64String.stringByAddingPercentEncodingWithAllowedCharacters(.URLHostAllowedCharacterSet()) as String!

然后将编码的图像数据字符串作为 JSON 对象发送到 Web 服务器。

    let params = ["image":[ "content_type": "image/jpeg", "filename":"testing", "file_data": base64String]]

    do {
        let postBody = try NSJSONSerialization.dataWithJSONObject(params, options: NSJSONWritingOptions.init(rawValue: 0))
        request.HTTPBody = postBody

        let session = NSURLSession.sharedSession()
        let task = session.dataTaskWithRequest(request, completionHandler: {data, response, error -> Void in
            print("Response: \(response)")})
        task.resume()

    } catch {
        print(error)
    }

现在 Java 服务器将 base64 图像数据字符串解码为图像

InputStream stream = new ByteArrayInputStream(Base64.decode(image.getBytes(), Base64.DEFAULT));

并将流写入 image.jpeg 文件。当我们尝试打开文件时,出现 不支持文件格式 错误。

当我尝试打印Base64编码的图像数据字符串时,发现如下。

%2F9j%2F4AAQSkZJRgABAQAASABIAAD%2F4QBMRXhpZgAATU0AKgAAAAgAAgESAAMAAAABAAEAAIdpAAQAAAABAAAAJgAAAAAAAqACAAQAAAABAAAQwKADAAQAAAABAAALIAAAAAD%2F7QA4UGhvdG9zaG9wIDMuMAA4QklNBAQAAAAAAAA4QklNBCUAAAAAABDUHYzZjwCyBOmACZjs+EJ+%2F+ICQElDQ19QUk9GSUxFAAEBAAACMEFEQkUCEAAAbW50clJHQiBYWVogB9AACAALABMAMwA7YWNzcEFQUEwAAAAAbm9uZQAAAAAAAAAAAAAAAAAAAAAAAPbWAAEAAAAA0y1BREJFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKY3BydAAAAPwAAAAyZGVzYwAAATAAAABrd3RwdAAAAZwAAAAUYmtwdAAAAbAAAAAUclRSQwAAAcQAAAAOZ1RSQwAAAdQAAAAOYlRSQwAAAeQAAAAOclhZWgAAAfQAAAAUZ1hZWgAAAggAAAAUYlhZWgAAAhwAAAAUdGV4dAAAAABDb3B5cmlnaHQgMjAwMCBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZAAAAGRlc2MAAAAAAAAAEUFkb2JlIFJHQiAoMTk5OCkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFhZWiAAAAAAAADzUQABAAAAARbMWFlaIAAAAAAAAAAAAAAAAAAAAABjdXJ2AAAAAAAAAAECMwAAY3VydgAAAAAAAAABAjMAAGN1cnYAAAAAAAAAAQIzAABYWVogAAAAAAAAnBgAAE+lAAAE...

如果我们能注意到,它包含许多百分比“%”符号,因为我使用

base64String.stringByAddingPercentEncodingWithAllowedCharacters(.URLHostAllowedCharacterSet()

在 swift 上传之前。

谁能指导我解码百分比编码的图像字符串。

我在 Java 中完成了 link Base64 数据解码。有了它,我们可以解码 base64 字符串,但如何处理百分比编码的字符串。

我想学习解码百分比编码的字符串。请提出您的意见。同时,我尝试上传没有百分比编码的图像,看看我是否可以在 Java 中成功解码它。

非常感谢。

我给你的 swift 中的最后一行是 URL 编码。 因此,您的服务器必须按顺序:URL 解码、Base64 解码并放入 JPG。

不要对图像字符串进行百分比编码。您可以直接发送为 base64EncodedString。 Java可以轻松解码。