ios开发之使用多文件上传的简单封装最原始的
生活随笔
收集整理的這篇文章主要介紹了
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开发之使用多文件上传的简单封装最原始的的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 做人做事的8大智慧
- 下一篇: IOS开发之JSON序列化从客户端发送到