Как отправить и сохранить Архивированный файл на сервер с Objective-C


У меня есть локальный путь к archived(.zip) документ в NSDocumentDirectory и хотите сохранить его на веб-сервере.

NSString *documentDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
NSString *archivePath = [documentDirectory stringByAppendingPathComponent:@"CreatedArchive.zip"];

Мне нужно сохранить этот файл на сервере , а затем получить .json документ с сервера, измените его (напишите туда сохраненный url архива) и загрузите обратно. Я предполагаю, что это делается с помощью ASIFormDataRequest и PHP. Может быть, у кого-то есть рабочий код для сохранения архивированных файлов на сервере?

1 2

1 ответ:

Я нашел как это сделать. Вы можете использовать asi-http-request для загрузки любого файла.

Используйте этот код:

// Upload archive
NSString *documentDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
NSString *archivePath = [documentDirectory stringByAppendingPathComponent:@"CreatedArchive.zip"];

ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:[NSURL URLWithString:@"http://your.url/uploadfile.php"]];
[request setPostValue:@"uploadfilefromapp" forKey:@"action"];
[request setFile:archivePath forKey:@"arch"];
[networkQueue addOperation:request];
[networkQueue go];

Uploadfile.php

<?php
if(isset($_POST['action']) && isset($_FILES['arch'])) {
    if($_POST['action']==='uploadfilefromapp') {
        $newfile = basename($_FILES['arch']['name']);
        if(move_uploaded_file($_FILES['arch']['tmp_name'], $newfile))  {
            echo 'ok!';
        } else {
            echo 'fail!';
        }
    } else {
        echo 'Go away cheater';
    }
}
?>

Это работает, но если вы знаете лучшее решение, пожалуйста, напишите здесь.