Загрузить файл на FTP-сервер на iPhone

Я хотел бы реализовать логику загрузки файла на FTP-сервер.

Я новичок в разработке iPhone, поэтому хочу выяснить предпочтительный подход. После просмотра доступного API для этой задачи мне удалось найти только код, использующий CFNetwork (который, похоже, не основан на Objective C).

Существует также система загрузки URL-адресов, использующая NSURL и т. Д., Основанная на Objective C.

Итак, мой вопрос: можно ли использовать систему загрузки URL-адресов для загрузки файлов на FTP-сервер?

Спасибо.


person Lyubomyr Dutko    schedule 12.08.2009    source источник


Ответы (1)


Я использую страницу PHP для публикации файла, и PHP обрабатывает загрузку ....

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

Код PHP:

<?php
$uploaddir = 'photos/';
$file = basename($_FILES['userfile']['name']);
$uploadfile = $uploaddir . $file;

if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
    echo "OK";
} else {
    echo "ERROR";
}

?>

Код iPhone:

- (BOOL)uploadImage:(NSData *)imageData filename:(NSString *)filename{


    NSString *urlString = @"http://www.yourdomainName.com/yourPHPPage.php";

    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--%@\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
    [body appendData:[[NSString stringWithString:[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"userfile\"; filename=\"%@\"\r\n",filename]] 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] autorelease];

    return ([returnString isEqualToString:@"OK"]);
}

Вызов метода:

[self uploadImage:UIImageJPEGRepresentation(imageView.image, 1.0) filename:imageName];
person Dutchie432    schedule 13.08.2009
comment
Я пытался реализовать ваш код, но процесс всегда возвращает ОШИБКУ. Я не совсем понимаю блок кода, поэтому может быть просто способ реализации данных не подходит для NSData, которую я пытаюсь отправить в файл php. У меня есть объект NSData, который содержит результаты NSKeyedArchiver из NSMutableArray, содержащего массив настраиваемых объектов (в моем случае записи базы данных). Не могли бы вы указать мне на хороший ресурс для понимания блока кода и / или предложить предложения о том, как улучшить этот код для моей цели? - person Greg Steiner; 05.06.2012
comment
Исправление: допущена одна опечатка. Код возвращает ОК, но файл не сохраняется в указанном каталоге. - person Greg Steiner; 05.06.2012
comment
Спасибо, чувак, этот ответ меня спас - person nfarshchi; 07.01.2015
comment
Великий человек, хорошее кодирование - person Adnan Abdollah Zaki; 28.11.2015