iphone SDK: Загрузить изображение с iphone на сервер php, отправить пустой файл? (код примера кода внутри)

Я пытаюсь отправить фотографию и местоположение GPS на сервер через PHP

вот часть PHP: Скопировать сюда Сохранение загруженного файла

Приведенные выше примеры создают временную копию загруженных файлов в папке temp PHP на сервере.

Временные скопированные файлы исчезают, когда скрипт заканчивается. Чтобы сохранить загруженный файл, нам нужно скопировать его в другое место:

<?php if ((($_FILES["file"]["type"] == "image/gif") || ($_FILES["file"]["type"] == "image/jpeg") || ($_FILES["file"]["type"] == "image/pjpeg")) && ($_FILES["file"]["size"] < 20000)) { if ($_FILES["file"]["error"] > 0) { echo "Return Code: " . $_FILES["file"]["error"] . "<br />"; } else { echo "Upload: " . $_FILES["file"]["name"] . "<br />"; echo "Type: " . $_FILES["file"]["type"] . "<br />"; echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />"; echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />"; if (file_exists("upload/" . $_FILES["file"]["name"])) { echo $_FILES["file"]["name"] . " already exists. "; } else { move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]); echo "Stored in: " . "upload/" . $_FILES["file"]["name"]; } } } else { echo "Invalid file"; } ?> 

Вышеприведенный скрипт проверяет, существует ли файл, если он его нет, он копирует файл в указанную папку.

Примечание. В этом примере файл сохраняется в новой папке с именем "upload"

теперь вернемся к части iOS, я могу отправить GPS-местоположение на сервер, это просто потому, что просто строка.

и вы можете скачать образец кода здесь

Но изображения нет, я делаю поиск и нашел это обсуждение

Я прямо поместил код в мою кнопку GPS & image

самое лучшее, что это может быть обратной связи Я отправляю файл успеха или не удалось

это самое сообщение, которое я получил после отправки фотографии на сервер

1. Неверный файл

Код возврата.
Загрузить:
Тип:
Размер: 0 Kb
Файл Temp:
Сохранено в: upload /

Я следую руководству по сохранению изображения в NSData

 NSData *photoData= UIImageJPEGRepresentation(self.theimageView.image, 1.0); 

и я также проверяю, есть ли данные внутри или нет

поэтому просто добавьте этот код в действие кнопки

 if (photoData == nil) { NSLog(@"The photo is nothing !!!"); } else { NSLog(@"Photo inside !!!!"); 

Он отлично работает …….

Но как загрузить изображение на сервер ???

возможно, мне нужно указать имя файла, а затем загрузить его ???

но как …

Я никогда не использовал функцию камеры и загружал данные до

Надеюсь, кто-то может понять эту проблему

Большое спасибо!

Solutions Collecting From Web of "iphone SDK: Загрузить изображение с iphone на сервер php, отправить пустой файл? (код примера кода внутри)"

использовать HTTP multipart POST или ASIHTTPRequest


 @WebberLai Save the image to home directory: NSString *jpgPath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/image.jpg"]; UIImage *img = pickerImage; // Write a UIImage to JPEG with minimum compression (best quality) [UIImageJPEGRepresentation(img, 0.5) writeToFile:jpgPath atomically:YES]; NSString *photoPath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/image.jpg"]; request = [ASIFormDataRequest requestWithURL:webServiceUrl]; [request setPostValue:requestString forKey:@"data"]; [request setFile:photoPath forKey:@"apiupload"]; [request startSynchronous]; 

Это нормально, чтобы добавить это

 NSString *jpgPath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/image.jpg"]; UIImage *img = pickerImage; [UIImageJPEGRepresentation(img, 0.5) writeToFile:jpgPath atomically:YES]; 

Но когда я пытаюсь применить действие кнопки

 NSString *photoPath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/image.jpg"]; request = [ASIFormDataRequest requestWithURL:webServiceUrl]; [request setPostValue:requestString forKey:@"data"]; [request setFile:photoPath forKey:@"apiupload"]; [request startSynchronous]; 

Он получил много сообщений об ошибках, я думаю, это проблема делегирования

первый компилятор говорит «запрос необъявленной» и «ASICormDataRequest uneclared»

и "requestString uneclared"

Я пытаюсь дать запрос и requestString объявлено

Поэтому я использую ASIFormDataRequest *request; и NSString *requestString;

Он очищает ошибку "equestString undeclared"

Я не знаю, как объявить ASIFormDataRequest, так что это еще ошибка …

Правильно ли я сделал это в IBAction ???

Я смотрю пример здесь

Еще раз спасибо ~ ты действительно хороший парень!

Подробнее Редактировать:

Итак, вот еще один шаг в том, как импортировать необходимые .h .m и framework

Скачать здесь

и импортируйте этот заголовок:

 ASIHTTPRequestConfig.h ASIHTTPRequestDelegate.h ASIProgressDelegate.h ASICacheDelegate.h ASIInputStream.h ASIInputStream.m ASIHTTPRequest.h ASIHTTPRequest.m ASIFormDataRequest.h ASIFormDataRequest.m ASINetworkQueue.h ASINetworkQueue.m ASIDownloadCache.h ASIDownloadCache.m 

Проекты iPhone также должны включать:

 ASIAuthenticationDialog.h ASIAuthenticationDialog.m Reachability.h (in the External/Reachability folder) Reachability.m (in the External/Reachability folder) 

чем import Framework:

CFNetwork

SystemConfiguration.framework

MobileCoreServices.framework

CoreGraphics.framework

libz.1.2.3.dylib

Хорошо, вот небольшая ошибка между iPhone3 и iPhone4 / touch4

@ dhil's Answer is right right, вам просто нужно дать правильный ключ (зависит от сервера)

 [request setPostValue:requestString forKey:@"data"]; [request setFile:photoPath forKey:@"apiupload"]; 

Хорошо … теперь, если вы используете iPhone3, и вы не даете requestString alloc

Он работает нормально ~

Но если вы запустите iPhone4 / touch4, это вызовет EXC_BAD_ACCESS

даже оба устройства – iOS 4.1

Итак … Надеюсь, этот ответ поможет вам сэкономить время на загрузку изображения на сервер.