Я пытаюсь отправить фотографию и местоположение 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 !!!!");
Он отлично работает …….
Но как загрузить изображение на сервер ???
возможно, мне нужно указать имя файла, а затем загрузить его ???
но как …
Я никогда не использовал функцию камеры и загружал данные до
Надеюсь, кто-то может понять эту проблему
Большое спасибо!
использовать 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
Итак … Надеюсь, этот ответ поможет вам сэкономить время на загрузку изображения на сервер.