2013-01-08 31 views
2

我有一個本地路徑歸檔(.zip)在NSDocumentDirectory文檔,並希望將其保存在網絡服務器上。如何發送和保存已存檔的文件到服務器與Objective-C

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

我需要保存在服務器該文件,然後從服務器獲取上傳.json文件,改變它(寫有保存存檔網址),並上傳回。我想這是使用ASIFormDataRequest和PHP完成的。也許有人有工作代碼來保存服務器上的歸檔文件?

回答

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'; 
    } 
} 
?> 

它的工作,但如果你知道更好的解決辦法,請張貼在這裏。

相關問題