将图像文件从 IOS 上传到 Web 服务器

Posted

技术标签:

【中文标题】将图像文件从 IOS 上传到 Web 服务器【英文标题】:upload image files from IOS to web server 【发布时间】:2015-10-21 09:32:37 【问题描述】:

考虑到 ios9 和 swift 2,在 java 中将图像文件上传到 Web 服务器的最佳方法是什么。

通过搜索,我意识到有人提出了类似的问题,并且网上有许多不同的方法可以上传图片。但是我不确定什么是最好的方法。

我尝试了以下方法,发现上传一张图片大约需要一分钟。

****方法一:****

使用 NSURLSession 并调用 java servlet 的“POST”方法 如example中所述以 JSON 格式发送

按照example 中的说明将图像附加到 httpbody 本身

****方法2:****

使用 NSURL 并调用 javascript 方法,如 example

我还阅读了有关 AFNetworking 2.0 (ex) 的信息,但我不确定它是否可以为上传过程带来任何性能提升。

我们的用户每天可能会拍摄大约 100 张图片,这些图片需要上传到网络服务器进行进一步处理。

请查看并提出您的意见。非常感谢。

【问题讨论】:

【参考方案1】:

从您的图像中创建 base64 字符串并将其发送到 Web 服务器。

let imageData = UIImageJPEGRepresentation(imageURL.image!, 0.5)
let base64String = imageData!.base64EncodedStringWithOptions([])

在您的网络服务器中,读取输入图像字符串并按如下方式对其进行解析。

byte[] imageBytes = javax.xml.bind.DatatypeConverter.parseBase64Binary(base64Image);

然后你可以对字节做任何你喜欢的事情,比如:

BufferedImage img = ImageIO.read(new ByteArrayInputStream(imageBytes));

【讨论】:

【参考方案2】:

我实际上是在开发一个社交应用程序,并在我个人使用 base64 的 API 上上传照片。

我只需对图像进行编码,因此我有一个编码字符串和 API 解码并将其放在 AWS 上。

我使用的是 Swift 2.0 和 iOS 9。如果你想要一段代码:

// You create a NSData from your image
var imageData = UIImageJPEGRepresentation(imageURL.image!, 0.5)
// You create a base64 string
let base64String = imageData!.base64EncodedStringWithOptions([])
// And you encode it in order to delete any problem of specials char
let encodeImg = base64String.stringByAddingPercentEncodingWithAllowedCharacters(.URLHostAllowedCharacterSet()) as String!

【讨论】:

即使我用过这种方法,看起来还不错。 @Nekfeu 您能否建议您的 API 如何解码发送的图像。提前致谢。 API 对收到的字符串进行 base64 解码。缓冲结果放在 JPG 上并存储在 AWS 中 我目前正在寻找实现相同目标的不同方法。你们有没有人尝试比较这些方法的速度和效率:(1)。从 UIImagePickerController 获取 UIImage 并转换为 NSData,然后上传 NSData (2)从 UIImagePickerController 获取 UIImage,然后转换为 PHAsset。然后获取NSData并上传(3)从UIImagePickerController获取UIImage并直接上传

以上是关于将图像文件从 IOS 上传到 Web 服务器的主要内容,如果未能解决你的问题,请参考以下文章

将图像上传到ios中的Web服务

Objective C - NodeJS - 如何将特定文件(不是图像)从 iOS 应用程序上传到服务器?

如何使用 ios 应用程序将图像上传到 Node.JS 服务器

我们如何将图像或照片上传到 ejabberd XMPP Web 服务器?

将图像从 iOS 上传到 PHP

从设备和云存储服务上传和下载图像或文件(文档、PDF)到 iOS 应用程序