Как отправить изображения на веб-сервис? - PullRequest
1 голос
/ 07 сентября 2010

Эй, кто-нибудь может опубликовать пример кода, демонстрирующий, как изображения (jpeg, png) могут быть размещены на локальном веб-сервисе.

Sayeed

Ответы [ 2 ]

4 голосов
/ 07 сентября 2010

Вот фрагмент кода -

- (void)useImage:(UIImage*)theImage
{
    /*
     turning the image into a NSData object
     getting the image back out of the UIImageView
     setting the quality to 90
     */

    NSData *imageData = UIImageJPEGRepresentation(theImage, 90);
    // setting up the URL to post to


    NSString *urlString=[SiteUrl    stringByAppendingString:@"iphone_upload_photo.php?type=colleague&token="];
    urlString=[urlString stringByAppendingString:PublicToken];





    // setting up the request object now
    NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease];
    [request setURL:[NSURL URLWithString:urlString]];
    [request setHTTPMethod:@"POST"];

    /*
     add some header info now
     we always need a boundary when we post a file
     also we need to set the content type

     You might want to generate a random boundary.. this is just the same

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

    /*
     now lets create the body of the post
     */
    NSMutableData *body = [NSMutableData data];
    [body appendData:[[NSString stringWithFormat:@"\r\n--%@\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]];
    // setting the body of the post to the reqeust
    [request setHTTPBody:body];

    // now lets make the connection to the web
    NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
    NSString *returnString = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding];





}

Редактировать: Объяснение кода -

Что мы делаем здесь, так это то, что мы просто отправляем изображение на серверную страницу точно так же, как мы делаем на HTML-странице. Предположим, у нас есть HTML-страница, подобная этой -

<form enctype="multipart/form-data" action="upload.php" method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="100000" />
Choose a file to upload: <input name="uploadedfile" type="file" /><br />
<input type="submit" value="Upload File" />
</form>

мы можем получить этот файл в коде PHP, как здесь -

$target_path = "uploads/";

$target_path = $target_path . basename( $_FILES['userfile']['name']); 

// $_FILES['userfile']['name'] will be "ipodfile.jpg"

if(move_uploaded_file($_FILES['userfile']['tmp_name'], $target_path)) {
    echo "The file ".  basename( $_FILES['userfile']['name']). 
    " has been uploaded";
} else{
    echo "There was an error uploading the file, please try again!";
}

Итак, что мы точно делаем в объективном коде, так это то, что мы просто создаем POST-запрос и устанавливаем заголовок http для этого пост-запроса, чтобы мы отправляли файл, а имя поля файла - «userfile», а точное имя файла - «ipodfile» .jpg "

Вы можете использовать php-код как есть, чтобы протестировать эту вещь.

Надеюсь, это устранит путаницу.

0 голосов
/ 07 сентября 2010

Первый Google Hit , вероятно, поможет вам.

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