UploadTask-04-网络上传任务

  1 //
  2 //  ViewController.m
  3 //  04-UploadTask
  4 //
  5 #import "ViewController.h"
  6
  7 #define Boundary @"AaB03x"
  8
  9 @interface ViewController ()
 10
 11 @end
 12
 13 @implementation ViewController
 14
 15 - (void)viewDidLoad {
 16     [super viewDidLoad];
 17     // Do any additional setup after loading the view, typically from a nib.
 18 }
 19
 20 - (void)didReceiveMemoryWarning {
 21     [super didReceiveMemoryWarning];
 22     // Dispose of any resources that can be recreated.
 23 }
 24 /*
 25  HTTP请求头:
 26  ....
 27  multipart/form-data; charset=utf-8;boundary=AaB03x
 28  ....
 29
 30  HTTP请求体:
 31  --AaB03x
 32  Content-Disposition: form-data; name="key1"
 33
 34  value1
 35  --AaB03x
 36  Content-disposition: form-data; name="key2"
 37
 38  value2
 39  --AaB03x
 40  Content-disposition: form-data; name="key3"; filename="file"
 41  Content-Type: application/octet-stream
 42
 43  图片数据...
 44  --AaB03x--
 45 2.00hd363CtKpsnBedca9b3f35tBYiPD
 46  */
 47 - (NSData *)buildBodyData:(NSData *)imgData {
 48
 49     NSString *accessToken = @"2.00hd363CtKpsnBedca9b3f35tBYiPD";
 50     NSString *statusValue = @"我发美女图片";
 51
 52     //1.设置status
 53     NSMutableString *bodyStr = [NSMutableString string];
 54     [bodyStr appendFormat:@"--%@\r\n", Boundary];
 55
 56     [bodyStr appendFormat:@"Content-Disposition: form-data; name=\"status\"\r\n\r\n"];
 57     [bodyStr appendFormat:@"%@\r\n", statusValue];
 58
 59     //2.设置accessToken
 60     [bodyStr appendFormat:@"--%@\r\n", Boundary];
 61
 62     [bodyStr appendFormat:@"Content-Disposition: form-data; name=\"access_token\"\r\n\r\n"];
 63     [bodyStr appendFormat:@"%@\r\n", accessToken];
 64
 65     //3.设置Image
 66     [bodyStr appendFormat:@"--%@\r\n", Boundary];
 67
 68     [bodyStr appendFormat:@"Content-Disposition: form-data; name=\"pic\"; filename=\"1.jpg\"\r\nContent-Type: application/octet-stream\r\n\r\n"];
 69
 70     NSMutableData *totalData = [NSMutableData data];
 71     NSData *textData = [bodyStr dataUsingEncoding:NSUTF8StringEncoding];
 72
 73     //拼前面所有字符串
 74     [totalData appendData:textData];
 75
 76     //拼图片数据
 77     [totalData appendData:imgData];
 78
 79     NSString *endBoundary = [NSString stringWithFormat:@"\r\n--%@--\r\n", Boundary];
 80
 81     [totalData appendData:[endBoundary dataUsingEncoding:NSUTF8StringEncoding]];
 82
 83     return totalData;
 84
 85
 86 }
 87
 88
 89
 90 - (IBAction)uploadAction:(id)sender {
 91
 92     NSURL *url = [NSURL URLWithString:@"https://upload.api.weibo.com/2/statuses/upload.json"];
 93
 94     //构造request
 95     NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
 96     request.HTTPMethod = @"POST";
 97     request.URL = url;
 98     request.timeoutInterval = 60;
 99
100     //设置请求头
101     NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; charset=utf-8;boundary=%@", Boundary];
102     [request setValue:contentType forHTTPHeaderField:@"Content-Type"];
103
104     //图片数据
105     NSString *imgPath = [[NSBundle mainBundle] pathForResource:@"1" ofType:@"jpg"];
106     NSData *imgData = [NSData dataWithContentsOfFile:imgPath];
107
108     NSData *uploadData = [self buildBodyData:imgData];
109
110     NSURLSession *session = [NSURLSession sharedSession];
111
112     NSURLSessionUploadTask *uploadTask = [session uploadTaskWithRequest:request fromData:uploadData completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
113
114         NSLog(@"response:%@", response);
115
116
117
118     }];
119
120     [uploadTask resume];
121
122
123
124 }
125 @end
时间: 2024-12-09 07:42:56

UploadTask-04-网络上传任务的相关文章

使用trickle限制网络上传和下载速度

使用trickle限制网络上传和下载速度 yum install trickleTrickle如何工作? Trickle通过控制socket数据读写量来控制和限制应用的上传/下载速度.它使用另一个版本的BSD套接字API,但是区别是trickle还管理socket调用.要注意的是trickle使用动态链接和加载,所以它只对于使用"Glibc库"的程序有用.由于trickle可以设置数据在socket上的传输延迟,所以它可以用来限制一个应用的网络带宽.Trickle不能做什么?    T

Android实战简易教程-第二十八枪(基于Bmob实现头像图片设置和网络上传功能!)

上一篇我们介绍了怎样由uri转换成String ,本文就用到了上篇文章的方法.以下我们介绍一下怎样设置头像后将头像图片上传到云端的方法,本文基于Bmob提供的服务. 看一下代码:(布局文件和前两篇文章依然一样,不再提供) package com.example.userphoto; import java.io.File; import android.app.Activity; import android.content.Intent; import android.database.Cur

04.文件上传

一.             文件上传之SmartUpload 1, smartupload 2, 简单的文件上传 1)通过表单选择要上传的文件,对表单进行封装--->enctype="multipart/form-data",使其不对字符数据编码,用于包含文件上传控件时的编码10 2)文件上传步骤 实例化SmartUpload对象--->初始化上传操作--->准备上传--->保存文件. 3)出现问题及解决 首先是中文文件名的文件上传到服务器会出现乱码现象,解决

okhttp实现断点上传

前言 之前项目需要上传大文件的功能,上传大文件经常遇到上传一半由于网络或者其他一些原因上传失败.然后又得重新上传(很麻烦),所以就想能不能做个断点上传的功能.于是网上搜索,发现市面上很少有断点上传的案例,有找到一个案例也是采用SOCKET作为上传方式(大文件上传,不适合使用POST,GET形式).由于大文件夹不适合http上传的方式,所以就想能不能把大文件切割成n块小文件,然后上传这些小文件,所有小文件全部上传成功后再在服务器上进行拼接.这样不就可以实现断点上传,又解决了http不适合上传大文件

Android仿微信图片上传,可以选择多张图片,缩放预览,拍照上传等

仿照微信,朋友圈分享图片功能 .可以进行图片的多张选择,拍照添加图片,以及进行图片的预览,预览时可以进行缩放,并且可以删除选中状态的图片 .很不错的源码,大家有需要可以下载看看 . 微信 微信 微信 微信 下载地址 : 微信上传图片源码 很多网友不知道怎么获取图片路径,这里贴出来: String path = Bimp.tempSelectBitmap.get(position).getImagePath(); //部分代码如下 [java] view plain copy package co

SpringMVC实现ajax文件上传

SpringMVC实现文件上传,直接上代码: 后台代码: 01 @RequestMapping(value = "/uploadApk") 02 @ResponseBody 03 public Object uploadApk( 04         @RequestParam(value = "apkFile") MultipartFile apkFile, 05         HttpServletRequest request, HttpServletRes

相册选择头像或者拍照 上传头像以NSData 图片二进制格式 表单上传

一.点击头像图片 或者按钮 在相册选择照片返回img,网络上传头像要用data表单上传 (1)上传头像属性 // 图片二进制格式 表单上传 @property (nonatomic, strong) NSData *imageWithData; (2)头像点击事件 - (void)headImageEvent{ NSLog(@"上传头像"); [self selectPhotoAlbumWithSelectPhotoHandle:^(UIImage *img) { self.heade

将本地PST文件上传到Office 365

最近有几家用户向我询问,本地的PST如何不通过终端的方式,让IT管理员通过后台上传到Office 365指定的用户邮箱.关于这个问题我今天针对 Office 365国际版进行了相关测试,以下是我测试的流程,希望对大家有所帮助. 1. 登录Office 365管理中心,定位到:用户--数据迁移,单击:上载PST文件 2. 在打开的PST上传向导中,点击:添加--上传电子邮件(PST文件),如下图: 3. 在通过网络上载文件对话框中,单击:显示网络上传SAS URL,并复制此URL 4. 点击第2步

Hbuilder开发app实战-识岁03-文件上传

前言 做app不得不谈的问题就是文件上传.用hbuilder开发app让上传变的非常easy. Uploader Uploader模块管理网络上传任务,用于从本地上传各种文件到server,并支持跨域訪问操作. 通过plus.uploader可获取上传管理对象. Uploader上传使用HTTP的POST方式提交数据,数据格式符合Multipart/form-data规范.即rfc1867(Form-based File Upload in HTML)协议. 很多其它内容:Uploader 代码

Android图片上传,可以选择多张图片,缩放预览,拍照上传等

仿照微信,朋友圈分享图片功能 .可以进行图片的多张选择,拍照添加图片,以及进行图片的预览,预览时可以进行缩放,并且可以删除选中状态的图片 .很不错的源码,大家有需要可以下载看看 . 微信 微信 微信 微信 下载地址 : 微信上传图片源码 //部分代码如下 [java] view plaincopy package com.king.photo.activity; import android.annotation.SuppressLint; import android.app.Activity