Опубликовать изображение и текст с iPhone на asp.net - PullRequest
1 голос
/ 26 мая 2011

Я пытаюсь отправить изображения и текст из приложения iPhone на веб-страницу asp.net.

Следуя этому примеру Теперь у меня есть следующий метод в xcode для загрузки изображения:

- (BOOL) uploadData {
    NSData *imageData = UIImageJPEGRepresentation([serviceForm image], 0.9);
    NSString *urlString = @"http://someUrl/SubmitSchema.ashx";
    NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease];
    [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 *body = [NSMutableData data];
    [body appendData:[[NSString stringWithFormat:@"--%@\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];

    [body appendData:[[NSString stringWithString:@"Content-Disposition: form-data; name=\"userfile\"; filename=\"ipodfile.jpg\"\r\n"] 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];

    NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
    NSString *returnString = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding];

    BOOL success = [returnString isEqualToString:@"ok"];
    [returnString release];

    return success;
}

В нижней части той же статьи есть предложение о создании универсального обработчика asp.net.Исходя из этого, у меня есть следующий простой код для сохранения изображения:

public void ProcessRequest(HttpContext context)
{
    context.Response.ContentType = "text/plain";
    foreach (var name in context.Request.Files.AllKeys)
    {
        var file = context.Request.Files.Get(name);
        SaveFile(file);
    }
}

private void SaveFile(HttpPostedFile file)
{
    var fileName = Path.GetFileName(file.FileName);
    var path = "C:\\Test\\" + fileName;

    file.SaveAs(path);
}

Это работает, и изображение сохраняется, но мне пока не удалось включить строку текста в тот же пост.Текст, который я хочу отправить, может быть довольно длинным, и я полагаю, что лучше включить его в опубликованные данные, а не в строку запроса?

Как бы вы добавили текст к опубликованным данным и прочитали егов .net?

Ответы [ 2 ]

2 голосов
/ 26 мая 2011

Я не эксперт Objective-C, но из небольшого поиска в Google я нашел обсуждение и рабочий пример отправки полей файла и формы в одном запросе .

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

string data = Request.Form["name"];

Если вы застряли, Fiddler является отличным инструментом для прослушивания HTTP-запросов.

0 голосов
/ 26 мая 2011

Один из вариантов - отправить длинную строку с типом контента в виде контента, закодированного формой, а затем с помощью context.Request.Form получить значение опубликованной строки. Так как у вас есть большая строка, ее можно поместить в одно значение формы как «data = 'large string'», а на стороне сервера вы можете сделать context.Request.Form ["data"], чтобы получить строку. ПРИМЕЧАНИЕ: вы должны правильно закодировать строку, чтобы любые = или & были закодированы перед публикацией

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...