Файл Загрузить изображение с кодом файла в Objective C iOS
Я новичок в разработке приложений для iOS, я просто хочу загрузить файл изображения с помощью NSMutableURLRequest. Тело запроса должно быть включено с изображением. Я просто хочу отправить изображение, как показано ниже, как Java-код
HttpPut mCreatePost = new HttpPut(params[0]+"/data");
FileEntity fileEntity = new FileEntity(uploadFile, "image/jpeg");
mCreatePost.setEntity(fileEntity);
mHttpClient.execute(mCreatePost);
Пожалуйста, помогите мне написать код Objective C, как указано выше. Заранее спасибо.
1 ответ
Процесс
- Сделать NSMutableURLRequest
- Установите URL для NSMutableURLRequest
- Установить метод HTTP для NSMutableURLRequest
- Установить поля заголовка для NSMutableURLRequest
- Установить HTTP тело для NSMutableURLRequest. Это будет включать в себя файл изображения и любые другие параметры (пример кода ниже)
- Инициализируйте ранее объявленный объект NSMutableData. Это используется для хранения ответа от сервера (пример кода ниже)
- Инициализируйте ранее объявленный объект NSURLConnection и установите его делегат. В примере кода я сделал тот же класс, что и делегат, и реализовал методы делегата.
Образец кода
- (void)uploadImage
NSString *urlStr = @"your link to the server";
NSMutableURLRequest *urlRequest = [[[NSMutableURLRequest alloc] init] autorelease];
[urlRequest setURL:[NSURL URLWithString:urlStr]];
[urlRequest setHTTPMethod:@"POST"];
NSString *myboundary = [NSString stringWithFormat:@"---------------------------14737809831466499882746641449"];
NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@",myboundary];
[urlRequest addValue:contentType forHTTPHeaderField: @"Content-Type"];
NSMutableData *postData = [NSMutableData data];
NSString *filePath = @"path to file you want to upload";
NSData *zipData = [NSData dataWithContentsOfFile:filePath];
if(zipData != nil){
[postData appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n", myboundary] dataUsingEncoding:NSUTF8StringEncoding]];
[postData appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"userfile\"; filename=\"%@\"\r\n", @"file.zip"]dataUsingEncoding:NSUTF8StringEncoding]];
[postData appendData:[[NSString stringWithFormat:@"Content-Type: application/octet-stream\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
[postData appendData:[NSData dataWithData:zipData]];
}
NSString *params =@"Any other parameters you want to send with the file";
NSLog(@"%@",params);
[postData appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n", myboundary] dataUsingEncoding:NSUTF8StringEncoding]];
[postData appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"%@\"\r\n\r\n", @"params"] dataUsingEncoding:NSUTF8StringEncoding]];
[postData appendData:[[NSString stringWithFormat:@"%@", params] dataUsingEncoding:NSUTF8StringEncoding]];
[postData appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n", myboundary] dataUsingEncoding:NSUTF8StringEncoding]];
[urlRequest setHTTPBody:postData];
[urlRequest setValue:[SettingsDataStore getSharedInstance].cooike forHTTPHeaderField:@"Cookie"];
responsedata = [[NSMutableData alloc] initWithData:nil];
conn = [[NSURLConnection alloc] initWithRequest:urlRequest delegate:self];
}
//NSURLConnection Delegate
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
[responsedata appendData:data];
}
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {
NSLog(@"error occured %@", [error localizedDescription]);
[responseData release];
[conn release];
}
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
//Do something with responseData and release it
[responseData release];
[conn release];
}