iPhone: загрузить изображение в веб-файл aspx - PullRequest
0 голосов
/ 29 июля 2010

У меня маленькая проблема. Я должен загрузить фотографию с моего iPhone на веб-сервер методом POST, но файл сервера находится в aspx. Я попробовал свой код с моим сервером и файлом PHP: работает хорошо! Теперь с файлом aspx: не загружается: (

У меня нет доступа к .aspx.

Вот мой код iphone:

NSData *imageData = UIImageJPEGRepresentation(imageView.image,70);

NSString *urlString = @"http://iphone.domain.net/upload_photos.aspx";


NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease];
[request setURL:[NSURL URLWithString:urlString]];
[request setHTTPMethod:@"POST"];

NSString *boundary = [NSString stringWithString:@"---------------------------14737809831466499882746641449"];
NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@",boundary];
[request addValue:contentType forHTTPHeaderField: @"Content-Type"];

NSMutableData *body = [NSMutableData data];
[body appendData:[[NSString stringWithFormat:@"--%@\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"photo\"; filename=\"%@.jpg\"\r\n",[c nom]] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithString:@"Content-Type: application/octet-stream\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[NSData dataWithData:imageData]];
[body appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[request setHTTPBody:body];

Я думаю, что проблема связана с Content-Type или моим параметром dataUsingEncoding :. У вас есть идея и решить ее?

Ответы [ 3 ]

0 голосов
/ 30 июля 2010

Попробуйте загрузить его на сервер aspx из командной строки с помощью curl . Как только у вас это получится, передайте -v (подробный) или -i (включая заголовки HTTP), чтобы точно проверить, что отправляется, и затем вы можете попытаться повторить это в Какао.

0 голосов
/ 30 июля 2010

Если вы не против использования сторонней библиотеки, подумайте над ASIHttpRequest.Это сделает вашу жизнь намного проще:

http://allseeing -i.com / ASIHTTPRequest /

http://allseeing -i.com / ASIHTTPRequest/ Как использовать

  ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];

    // Upload a file on disk
    [request setFile:@"/Users/ben/Desktop/ben.jpg" withFileName:@"myphoto.jpg" andContentType:@"image/jpeg"
    forKey:@"photo"];

    // Upload an NSData instance
    [request setData:imageData withFileName:@"myphoto.jpg" andContentType:@"image/jpeg" forKey:@"photo"];
0 голосов
/ 29 июля 2010

обычно граница не содержит ---, если она указана в Content-Type.Кроме того, не вижу ничего необычного.

...