0
我想上傳一個圖像以及一些表單域。我可以使用以下鏈接將圖像上傳到服務器作爲參考。POST方法發送帖子變量和圖像到php服務器
File Upload to HTTP server in iphone programming
但如果我嘗試與圖像一起發送某種形式的字段我的錯誤響應。這裏是我正在使用的代碼
-(void)saveData{
NSString *urlString = @"Sample url";
NSString *filename = @"filename";
NSMutableURLRequest *request= [[NSMutableURLRequest alloc] init];
[request setURL:[NSURL URLWithString:urlString]];
[request setHTTPMethod:@"POST"];
NSString *boundary = @"---------------------------14737809831466499882746641449";
NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@",boundary];
[request addValue:contentType forHTTPHeaderField: @"Content-Type"];
NSMutableData *postbody = [NSMutableData data];
[postbody appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[postbody appendData:[self generateDataFromText:FORM DATA IN JSON fieldName:@"add_product"]];
[postbody appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"files\"; filename=\"%@.jpg\"\r\n", filename] dataUsingEncoding:NSUTF8StringEncoding]];
[postbody appendData:[@"Content-Type: application/octet-stream\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[postbody appendData:[NSData dataWithData:fileData]];
[postbody appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[request setHTTPBody:postbody];
[request setValue:APIKEY forHTTPHeaderField:@"X-API-KEY"];
NSURLResponse *urlResp;
NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:&urlResp error:nil];
NSString *returnString = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding];
NSHTTPURLResponse *resp = (NSHTTPURLResponse *) urlResp;
NSLog(@"status code: %ld, response string: %@",(long)[resp statusCode],returnString);
}
-(NSMutableData *)generateDataFromText:(NSString *)dataText fieldName:(NSString *)fieldName
{
NSString *post = [NSString stringWithFormat:@"--AaB03x\r\nContent-Disposition: form-data; name=\"%@\"\r\n\r\n", fieldName];
// Get the post header int ASCII format:
NSData *postHeaderData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
// Generate the mutable data variable:
NSMutableData *postData = [[NSMutableData alloc] initWithLength:[postHeaderData length]];
[postData setData:postHeaderData];
NSData *uploadData = [dataText dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
// Add the text:
[postData appendData: uploadData];
// Add the closing boundry:
[postData appendData: [@"\r\n" dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES]];
// Return the post data:
return postData;
}
所以有人請幫助我發送表單數據以及圖像到PHP服務器使用POST方法。提前致謝。
感謝您的回答。我按照你的建議做了同樣的事情,但只有圖像到達服務器而不是表單域。同樣的行爲也早。你可以建議一些教程上傳圖像和形式使用AFNetworking切斷。 – Gani414
讓它與AFNetworking一起工作非常簡單。通過Cocoapods將AFNetworking添加到您的項目中,以下是說明: – Ahmed
我在您的評論中沒有看到任何說明。無論如何,你的代碼中的關鍵是什麼? – Gani414