iOS 图片上传至服务器

作者: 雨墨丫头 | 来源:发表于2017-01-18 10:38 被阅读1054次

在做项目的时候, 我们会遇到用户头像上传至服务器的功能, 还有就是用户发表动态选择本地图片上传服务器的功能.但总归就一句话:就是把图片上传到服务器.

我这里是利用AFN第三方, 如果不打算利用三方的, 也可以自己试试写,其实很简单, 但我个人觉得AFN已经很强大了, 并且现在很多人都在用, 你也不妨利用AFN, 大牛的话一般都是直接自己敲的, 嘿嘿, 我还是一个小罗罗, 跟大牛不能比啊, 还有很长的一段路要走呢, 不说了, 小不点带大家看一下上传至服务器的步骤吧!

首先, 后台会给你一个上传图片到服务器的地址, 其次, 你需要根据拼接参数, 然后进行数据请求, 数据请求成功后, 服务器会返回来图片的地址, 你拿到地址后, 将图片再上传

下面看代码

- (void)upLoadImage {
    AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
    manager.requestSerializer.timeoutInterval = 20;
    manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"text/plain", @"application/json", @"text/html", @"text/json", nil];
    NSString *urlStr = [NSString stringWithFormat:@"%@/%@", kHomeDefaultUrl, kUploadImageUrl];
    NSDictionary *dic = @{@"id":@"0"};
    //根据当前系统时间生成图片名称
    NSDate *date = [NSDate date];
    NSDateFormatter *formatter = [[NSDateFormatter alloc]init];
    [formatter setDateFormat:@"yyyy年MM月dd日"];
    NSString *dateStr = [formatter stringFromDate:date];
    _i = 0;
    
    [manager POST:urlStr parameters:dic constructingBodyWithBlock:^(id<AFMultipartFormData>  _Nonnull formData) {
        [self.hud hide:YES];

    for (UIImage *image in _array) {
        NSString *fileName = [NSString stringWithFormat:@"%@%ld.png",dateStr,_i];
        
        NSData *imageData = UIImageJPEGRepresentation(image, 1.0);
        float size = imageData.length/1024.0/1024.0;
        if (size>=1) {
            imageData = UIImageJPEGRepresentation(image, 0.3);
        }else{
            imageData = UIImageJPEGRepresentation(image, 0.5);
        }
      
        [formData appendPartWithFileData:imageData name:[NSString stringWithFormat:@"file%ld",_i] fileName:fileName mimeType:@"image/jpeg"];
          _i++;
    }
        } progress:^(NSProgress * _Nonnull uploadProgress) {
            NSLog(@"进度");
        } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
            NSLog(@"上传成功");
            NSDictionary *returnDic = [NSDictionary dictionaryWithDictionary:responseObject];
            if ([[returnDic objectForKey:@"ac"] isEqualToString:@"success"]) {
                NSDictionary *photoDic = [NSDictionary dictionaryWithDictionary:[returnDic objectForKey:@"photos"]];
               NSLog(@"这里将你得到的图片地址拿到, 做接下来上传图片的步骤");
            }
        } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
            NSLog(@"上传失败");
        }];

}

其中_array中我放的是图片, 你可以上传多张图片到服务器, 你如果上传多张图片,发现服务器返回的图片地址是一样的, 说明, 服务器名字写重了, 由于我们是以日期为名命名的, 在上传多张图片的时候容易写重, 毕竟服务器那边还分辨不了这么多, 你需要做的就是一张一张上传, 不要在上面的代码里循环, 要在外面循环呦!

你觉得怎么样呢? 欢迎多多指正呦!
// 转载请注明原地址呦!

相关文章

  • 无标题文章

    iOS 上传图片到服务器 1.单张图片上传 //上传图片(单张)+(void)uploadPhotoAndCont...

  • iOS 图片上传至服务器

    在做项目的时候, 我们会遇到用户头像上传至服务器的功能, 还有就是用户发表动态选择本地图片上传服务器的功能.但总归...

  • iOS上传图片后台旋转展示问题

    iOS上传图片后台旋转展示问题 在一次上传图片到服务器后,去后台页面查看,发现iOS显示的图片总是旋转90℃的,而...

  • 图片上传-服务器得到的被旋转90度解决方法

    相关:1.iOS中(相册)摄像头获取的图片上传至服务器被自动旋转了2.iPhone上关于相机拍照的图片的image...

  • 阿里云(I)

    参考资料:iOS 阿里云服务器图片上传iOS录制(或选择)视频,压缩、上传(整理)视频 拍摄 与压缩 阿里云OSS...

  • ios Crash闪退日志获取和上传至服务器(NSSetUnca

    ios Crash闪退日志获取和上传至服务器(NSSetUncaughtExceptionHandler)上线iO...

  • Flask部署OCR

    情形一:图片在服务器上,传输图片在服务器上的地址 Client: Server: 情形二:图片保存在本地,上传至服...

  • iOS图片旋转问题

    iOS图片旋转问题 在iOS开发中经常会遇到图片旋转的问题,比如:有时候上传到服务器中的图片方向与iPhone中图...

  • Android上传图片到服务器

    本实例实现了android上传手机图片至服务器,服务器进行保存 服务器servlet代码 publicvoiddo...

  • 图片上传至服务器

    一 图片上传方式有两种: 1.base64字符串形式上传图片,这种方式适合图片数量比较少的时候使用,例如上传用户头...

网友评论

  • 5116166f07aa:大佬知道本地图片上传至云端的优化么(图片量巨大) 使用data的话内存会飚,请求回复
  • 三创iOS和PHP开发:您这有服务器端代码的demo么?或者您这篇文章中的url是怎么样的呢?文章中您用的是变量写的
  • Roader:就是说我们上传一张图片到服务器,需要写这么多代码?
    ebay_Happy:你技术牛逼了 可以开个一个新方案
    雨墨丫头:@Longroader 是的,这也不多吧亲:smile:

本文标题:iOS 图片上传至服务器

本文链接:https://www.haomeiwen.com/subject/qibvbttx.html