本人剛開始接觸ios一個月,現(xiàn)在記錄下每天學習的點點滴滴和遇到的一些坑芥玉,希望和大家共勉蛇摸。。
因為是初學灿巧,可能有表達的不準確的地方赶袄,如果有的話希望大家?guī)臀壹m正揽涮!
說說最近讓我稍微有些頭疼的圖片上傳的問題吧(網(wǎng)絡(luò)框架用的是AFNetworking)。
一開始我們上傳是將圖片轉(zhuǎn)換成byte數(shù)組饿肺,然后放在json中直接上傳的蒋困,這里有個要注意的地方,就是oc中Byte的符號位問題敬辣。
NSData *imageData = UIImageJPEGRepresentation(image, 0.5);//將UIImage轉(zhuǎn)成NSData
SignedByte *testByte = (SignedByte *)[data bytes]//注意這里得用SignedByte,如果直接用Byte的話就會出問題
NSMutableArray *byte = [NSMutableArray array];//將byte作為字典中的參數(shù)
for(int i=0;i<[data length];i++)
[byte addObject:@(testByte[i])];
這里最主要的就是SignedByte(有符號位雪标,取值范圍是-128127),一開始我用的Byte(無符號位,0255)溉跃,死活傳不上村刨,后來才發(fā)現(xiàn)是byte的符號位問題,orz.撰茎。
還有文件流的方式上傳圖片嵌牺,這個還是比較常見的了,直接上代碼龄糊。
[manager POST:url parameters:pramasa constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) {
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
formatter.dateFormat = @"yyyyMMddHHmmss";
NSString *str = [formatter stringFromDate:[NSDate date]];
NSString *fileName = [NSString stringWithFormat:@"%@.jpg", str];
//上傳圖片
[formData appendPartWithFileData:data //要上傳的文件
name:@"" //這個參數(shù)是后臺取文件參數(shù)的時候用的名字髓梅,如果沒有的話就傳空字符串
fileName:fileName//文件上傳的名字,可以隨便取绎签,但是不要重名枯饿,所以一般是用拼接當前時間的方式作為文件名
mimeType:@"image/jpeg"];
} progress:^(NSProgress * _Nonnull uploadProgress) {
} success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
//上傳成功
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
//上傳失敗
}];
以上!诡必!