繁体   English   中英

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

[英]Decode Base64 percentage encoded Image String in Java

朋友们

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

    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图像数据字符串解码为image为

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

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

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

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

如果我们可以注意到的话,它和我以前使用的包含许多百分比的“%”符号

base64String.stringByAddingPercentEncodingWithAllowedCharacters(.URLHostAllowedCharacterSet()

在上传之前迅速进行。

有人可以指导我解码百分比编码的图像字符串。

我浏览了有关Java中Base64数据解码的链接 这样,我们可以解码base64字符串,但是如何处理百分比编码的字符串。

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

提前谢谢了。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM