日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ios开发之使用多文件上传的简单封装最原始的

發布時間:2023/12/18 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ios开发之使用多文件上传的简单封装最原始的 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

ios開發之使用多文件上傳的簡單封裝最原始的

// // ViewController.m // 18-上傳多個文件 // // Created by 魯軍 on 2021/2/13. //#import "ViewController.h" #import "HMUploadFiles.h" @interface ViewController ()@end@implementation ViewController- (void)viewDidLoad {[super viewDidLoad];// Do any additional setup after loading the view. }- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{NSString *path1=[[NSBundle mainBundle] pathForResource:@"01.jpg" ofType:nil];NSString *path2=[[NSBundle mainBundle] pathForResource:@"02.jpg" ofType:nil];NSString *path3=[[NSBundle mainBundle] pathForResource:@"03.jpg" ofType:nil];NSArray *arrayPaths = @[path1,path2,path3];NSDictionary *params=@{@"username":@"zhangsan"};//[self upLoadFiles:@"http://localhost:8080/MJServer/" fieldName:@"userfile[]" filePaths:arrayPaths params:params];[HMUploadFiles upLoadFiles:@"http://localhost:8080/MJServer/" fieldName:@"userfile[]" filePaths:arrayPaths params:params];}@end // // HMUploadFiles.h // 18-上傳多個文件 // // Created by 魯軍 on 2021/2/13. //#import <Foundation/Foundation.h>NS_ASSUME_NONNULL_BEGIN@interface HMUploadFiles : NSObject +(void)upLoadFile:(NSString *)urlString fieldName:(NSString *)fieldNamefilePath:(NSString *)filePath;+(void)upLoadFile:(NSString *)urlString fieldName:(NSString *)fieldNamefilePath:(NSString *)filePath params:(NSDictionary *)params;+(void)upLoadFiles:(NSString *)urlString fieldName:(NSString *)fieldNamefilePaths:(NSArray *)filePaths params:(NSDictionary *)params; @endNS_ASSUME_NONNULL_END // // HMUploadFiles.m // 18-上傳多個文件 // // Created by 魯軍 on 2021/2/13. //#import "HMUploadFiles.h" #define kBOUNDARY @"abc" @implementation HMUploadFiles+(void)upLoadFile:(NSString *)urlString fieldName:(NSString *)fieldNamefilePath:(NSString *)filePath{[self upLoadFile:urlString fieldName:fieldName filePath:filePath params:nil]; }+(void)upLoadFile:(NSString *)urlString fieldName:(NSString *)fieldNamefilePath:(NSString *)filePath params:(NSDictionary *)params{[self upLoadFiles:urlString fieldName:fieldName filePaths:@[filePath] params:params];}+(void)upLoadFiles:(NSString *)urlString fieldName:(NSString *)fieldNamefilePaths:(NSArray *)filePaths params:(NSDictionary *)params{NSURL *url = [NSURL URLWithString:urlString];NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];request.HTTPMethod=@"post";[request setValue:[NSString stringWithFormat:@"multipart/form-data;boundary=%@",kBOUNDARY] forHTTPHeaderField:@"Content-Type"];request.HTTPBody = [self makeBody:fieldName filePaths:filePaths params:params];[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse * _Nullable response, NSData * _Nullable data, NSError * _Nullable connectionError) {if(connectionError){NSLog(@"連接錯誤 %@",connectionError);return;}NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)response;if(httpResponse.statusCode==200||httpResponse.statusCode==304){//解析數據id json = [NSJSONSerialization JSONObjectWithData:data options:0 error:NULL];NSLog(@"%@",json);}else{NSLog(@"服務器內部錯誤");}}];}+(NSData *)makeBody:(NSString *)fieldNamefilePaths:(NSArray *)filePaths params:(NSDictionary *)params{NSMutableData *mData = [NSMutableData data];//拚文件[filePaths enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {NSMutableString *mString = [NSMutableString string];if(idx==0){[mString appendFormat:@"--%@\r\n",kBOUNDARY];}else{[mString appendFormat:@"\r\n--%@\r\n",kBOUNDARY];}[mString appendFormat:@"Content-Disposition: form-data; name=\"%@\";filename=\"%@\"\r\n",fieldName,[obj lastPathComponent]];[mString appendString:@"Content-Type: application/octet-stream\r\n"];[mString appendString:@"\r\n"];[mData appendData:[mString dataUsingEncoding:NSUTF8StringEncoding]];//加載文件NSData *data = [NSData dataWithContentsOfFile:obj];[mData appendData:data];}];// 拼字符串[params enumerateKeysAndObjectsUsingBlock:^(id _Nonnull key, id _Nonnull obj, BOOL * _Nonnull stop) {NSMutableString *mString = [NSMutableString string];[mString appendFormat:@"\r\n--%@\r\n",kBOUNDARY];[mString appendFormat:@"Content-Disposition: form-data; name=\"%@\"\r\n",key];[mString appendString:@"\r\n"];[mString appendFormat:@"%@",obj];[mData appendData:[mString dataUsingEncoding:NSUTF8StringEncoding]];}];//3 結束NSString *end = [NSString stringWithFormat:@"\r\n--%@--",kBOUNDARY];[mData appendData:[end dataUsingEncoding:NSUTF8StringEncoding]];return mData.copy; } @end

總結

以上是生活随笔為你收集整理的ios开发之使用多文件上传的简单封装最原始的的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 爱情岛黄色 | 内射合集对白在线 | 精品欧美一区二区精品少妇 | 免费播放毛片精品视频 | 日日夜夜91 | 日日噜噜夜夜狠狠久久丁香五月 | 美女aaa| 国产精品视频网 | 免费黄色av网址 | 亚洲在线播放 | 2019最新中文字幕 | 国产av成人一区二区三区高清 | 日本第一页 | 天天爽夜夜爽人人爽 | 进去里视频在线观看 | 特高潮videossexhd| 国产91影院| 在线观看福利片 | 国产真实生活伦对白 | 欧美日韩国产一区二区三区 | 三级福利 | 精品一区二区三区在线免费观看 | 免费激情小视频 | 自拍日韩亚洲一区在线 | 一区二区乱码 | 午夜影视av | 91草视频 | 高清av免费| 啪啪啪毛片 | 青青草精品在线 | 中文字幕免费在线播放 | 91视频99| 麻豆电影网站 | 一区二区精品在线 | 97在线视频人妻无码 | 国模无码视频一区二区三区 | 国产精品久久久久久久久久久新郎 | 久久中文字幕国产 | 亚洲国产电影在线观看 | 暖暖日本在线视频 | 黑人极品videos精品欧美裸 | 免费观看日韩毛片 | 精品伦理一区二区 | 日本妇乱大交xxxxx | 日本天堂影院 | 级毛片| 久久禁 | 欧美精品在线一区 | 国产精品国产三级国产专区51 | 午夜精品在线播放 | av嫩草| 三上悠亚 电影 | 精品人妻一区二区三区麻豆91 | 日韩人妻一区二区三区 | 五月综合在线 | www.日日夜夜 | 精品亚洲一区二区三区 | 欧美激情在线观看视频 | 日本久久久久 | 波多野结衣乳巨码无在线 | 嫩模被强到高潮呻吟不断 | 色呦呦在线看 | 成人毛片基地 | 欧美一级片在线视频 | 六月激情综合网 | 丰满人妻综合一区二区三区 | 国产chinesehd天美传媒 | 日韩中文字幕网站 | 日p视频在线观看 | 影音先锋黄色资源 | 四虎国产成人精品免费一女五男 | 一区二区三区视频在线 | 欧美精品一区二区三区久久久竹菊 | 在线免费观看黄视频 | 日韩电影在线观看中文字幕 | 97国产在线观看 | 中国白嫩丰满人妻videos | 亚洲精品黄 | 嫩草影院在线观看视频 | 人人天天夜夜 | 国产二级视频 | 国产精品成人免费看片 | 日本三级午夜理伦三级三 | 欧美aa大片 | 一区二区三区免费在线 | 亚洲裸体视频 | 国产精品综合久久 | 一级黄色在线 | 日韩污污 | 一卡二卡精品 | 艳妇乳肉豪妇荡乳av无码福利 | 国产精品久久欧美久久一区 | 成人一级片视频 | 精品国产乱码一区二 | 最好看的2019中文大全在线观看 | 黄色片a级片 | 欧美成人二区 | 波多野结衣家庭主妇 | 免费黄色av网站 |