IOS关于图片上传
iOS上傳圖片有固定的格式?
需要把圖片的數據再request的HTTPBody中配置好
格式
/*
?? ? --Boundary+72D4CD655314C423 ? // 分割符,以“--”開頭,后面的字隨便寫,只要不寫中文即可
?? ? Content-Disposition: form-data; name="uploadFile"; filename="001.png"? //這里一定要記住filename = “fghhj.jpg”一定要有擴展名jpg或者別的 這里注明服務器接收圖片的參數(類似于接收用戶名的userName)及服務器上保存圖片的文件名
?? ? Content-Type:image/png? // 圖片類型為png
?? ? Content-Transfer-Encoding: binary? // 編碼方式
?? ? // 這里是空一行,必不可少!!
?? ? ... contents of boris.png ...? // 圖片數據部分
?? ? --Boundary+72D4CD655314C423--? // 分隔符后面以"--"結尾,表明結束
?? ? */
- (void)setMutableRequest:(NSMutableURLRequest *)request WithImage:(UIImage *)image Parameters:(NSDictionary *)paramerters {//構造分界線 boundaryNSString *boundary = [NSString stringWithFormat:@"upoad%d%d",arc4random(),arc4random()];//圖片數據NSData *imageData = UIImagePNGRepresentation(image);/*(image, 1);*//*--Boundary+72D4CD655314C423 // 分割符,以“--”開頭,后面的字隨便寫,只要不寫中文即可Content-Disposition: form-data; name="uploadFile"; filename="001.png" // 這里注明服務器接收圖片的參數(類似于接收用戶名的userName)及服務器上保存圖片的文件名Content-Type:image/png // 圖片類型為pngContent-Transfer-Encoding: binary // 編碼方式// 這里是空一行,必不可少!!... contents of boris.png ... // 圖片數據部分--Boundary+72D4CD655314C423-- // 分隔符后面以"--"結尾,表明結束*///請求頭NSMutableString *topStr = [NSMutableString string];//如果有參數,一定要先弄參數的NSMutableDictionary *mdic = paramerters.mutableCopy;[mdic setObject:[self getUserId] forKey:@"token"];NSArray *keys = [mdic allKeys];NSLog(@"%@",keys);for (int i = 0; i < keys.count; i++) {NSString *key = keys[i];//添加分界線,換行[topStr appendFormat:@"--%@\r\n",boundary];//添加字段名稱,換2行[topStr appendFormat:@"Content-Disposition: form-data; name=\"%@\"\r\n\r\n",key];//添加字段的值[topStr appendFormat:@"%@\r\n",mdic[key]];}NSLog(@"%@",topStr);// [topStr appendFormat:@"--%@\r\n",boundary]; // [topStr appendFormat:@"Content-Disposition: form-data; name=\"uploadFile\"; filename=\"%@\"\r\n",@"icon"]; // [topStr appendFormat:@"Content-Type:image/jpeg\r\n"]; // [topStr appendFormat:@"Content-Transfer-Encoding: binary\r\n\r\n"]; [topStr appendString:[NSString stringWithFormat:@"--%@\r\n",boundary]];[topStr appendString:[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"uploadFile\"; filename=\"%@\"\r\n",@"icon.png"]];[topStr appendString:[NSString stringWithFormat:@"Content-Type:image/png\r\n"]];[topStr appendString:[NSString stringWithFormat:@"Content-Transfer-Encoding: binary\r\n\r\n"]];//拼接數據NSMutableData *requestBody = [NSMutableData data];[requestBody appendData:[topStr dataUsingEncoding:NSUTF8StringEncoding]];[requestBody appendData:imageData];[requestBody appendData:[@"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];//結束部分[requestBody appendData:[[NSString stringWithFormat:@"--%@--",boundary] dataUsingEncoding:NSUTF8StringEncoding]];[request setHTTPMethod:@"POST"];[request setHTTPBody:requestBody];[request setValue:[NSString stringWithFormat:@"%zd", requestBody.length] forHTTPHeaderField:@"Content-Length"];// 設置頭部數據,指定了http post請求的編碼方式為multipart/form-data(上傳文件必須用這個)。[request setValue:[NSString stringWithFormat:@"multipart/form-data; boundary=%@",boundary] forHTTPHeaderField:@"Content-Type"];}?
文件上傳請求數據格式
部分文件的type
?
AFNetWorking 上傳圖片
- (void)uploadImageWithUrl:(NSString *)urlimage:(UIImage *)imageParameters:(NSDictionary *)paramertersSuccess:(SuccessBlock)successErrorBlock:(ErrorBlock)errorBlock {WS(ws);AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];AFHTTPRequestOperation *op = [manager POST:url parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) {NSMutableDictionary *mdic = paramerters.mutableCopy;[mdic setObject:[ws getUserId] forKey:@"token"];//如果有參數NSArray *keys = [mdic allKeys];for (int i = 0; i < keys.count; i++) {NSString *key = keys[i];NSString *content = mdic[key];NSData *contenData = [content dataUsingEncoding:NSUTF8StringEncoding];//調用這個方法 [formData appendPartWithFormData:contenData name:key];}//配置圖片NSData *imageData = UIImagePNGRepresentation(image);NSDateFormatter *df = [[NSDateFormatter alloc]init];df.dateFormat = @"YYYYMMddHHmmss";NSString *fileName = [NSString stringWithFormat:@"%@.png",[df stringFromDate:[NSDate new]]];[formData appendPartWithFileData:imageData name:@"myfile" fileName:fileName mimeType:@"image/png"];} success:^(AFHTTPRequestOperation * _Nonnull operation, id _Nonnull responseObject) {if (success) {NSLog(@"%@",responseObject);}} failure:^(AFHTTPRequestOperation * _Nonnull operation, NSError * _Nonnull error) {NSLog(@"%@",error);}];[op start]; }?
轉載于:https://www.cnblogs.com/feiyudexingfu/p/4892031.html
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
- 上一篇: oracle record is loc
- 下一篇: Blocks编程