将多张图片作为 Facebook 快速上传到服务器 iOS

Posted

技术标签:

【中文标题】将多张图片作为 Facebook 快速上传到服务器 iOS【英文标题】:Upload multiple pictures to server iOS Fastly as Facebook 【发布时间】:2016-07-23 05:32:00 【问题描述】:

我们创建了一个可以将多个图像上传到服务器的应用程序(php REST API),但是上传需要更多时间,如果我将 10 个图像添加到队列中,则应用程序响应缓慢

我们看到 Facebook ios 应用可以轻松上传多张图片(它尝试了 32 张)并且在 15 秒内上传

他们如何将图片快速上传到服务器,以及他们如何在应用手机内存中进行管理

他们在上传到服务器之前会降低质量吗?

服务器和应用的规格:

xCode:7.3

用于上传图像的 Alamofire [Multipart] - API 调用

PHP:5.5.9-1

Apache2:2.4.7

mysql:5.5.49-0

PHP 配置:

memory_limit:512M

max_file_uploads: 100

post_max_size: 512M

最大执行时间:600

上传最大文件大小:512M

图片上传代码

manager.upload(.POST, CustomizedEP,
                   multipartFormData:  multipartFormData in
                    if let imageData = UIImageJPEGRepresentation(profilePic, 1) 
                        multipartFormData.appendBodyPart(data: imageData, name: "temp_pic", fileName: imageName, mimeType: "image/png")
                    
                    for (key, value) in ["image_name": imageName] 
                        multipartFormData.appendBodyPart(data: value.dataUsingEncoding(NSUTF8StringEncoding)!, name: key as! String)
                    
        ,
                   encodingCompletion:  encodingResult in
                    switch encodingResult 
                    case .Success(let upload, _, _):
                        upload.responseJSON  response in
                            if let data = response.result.value 
                                self.delegate.addPicToPostResponse!(data, Status: (response.response?.statusCode)!);
                                hideLoader(LoaderType.Default);
                            
                        
                        upload.progress _, totalBytesRead, totalBytesExpectedToRead in
                            //let progress = Float(totalBytesRead)/Float(totalBytesExpectedToRead);
                            //self.delegate.uploadTempPicProgressInfo!(progress, index: index, request: upload.request!); //Removed index so we are not using it
                        
                    case .Failure(let encodingError):
                        print(encodingError)
                        hideLoader(LoaderType.Default);
                    
    );

我们正在上传 iPhone5 拍摄的图片

【问题讨论】:

请向我们展示您的代码和测试期间上传的图片。 @RobertColumbia 添加代码请检查 【参考方案1】:

That's how

但是,您可以升级您的服务器配置,了解 CPU/内存/数据中心地理位置和互联网连接带宽

【讨论】:

我不想要像 facebook 这样的确切响应能力,我想知道他们如何在不丢失应用响应能力的情况下上传多张图片的逻辑或架构

以上是关于将多张图片作为 Facebook 快速上传到服务器 iOS的主要内容,如果未能解决你的问题,请参考以下文章

Facebook 应用程序:在一篇文章中将多张图片上传到墙上

使用 iOS SDK 将多张照片作为单个帖子上传,例如时间线照片,而不是 Facebook 中的相册

使用 AFNetworking 快速上传多张图片

在这种情况下如何将多张图片上传到远程服务器?循环或重复上传过程?

将多张图片从图库上传到android中的服务器

如何使用 Swift 将多张图片上传到服务器?