2013-02-20 27 views
1

目前我正在將一個xml文件從mac上傳到服務器。它工作正常。下面是代碼:使用PHP腳本和iOS上傳多個文件

OSX代碼

NSString *urlString1 = @"http://username:[email protected]/files/upload.php"; 


NSMutableURLRequest *request1 = [[NSMutableURLRequest alloc] init]; 
[request1 setURL:[NSURL URLWithString:urlString1]]; 
[request1 setHTTPMethod:@"POST"]; 



NSString *boundary1 = @"---------------------------14737809831466499882746641449"; 
NSString *contentType1 = [NSString stringWithFormat:@"multipart/form-data; boundary=%@", boundary1]; 
[request1 addValue:contentType1 forHTTPHeaderField:@"Content-Type"]; 

NSMutableData *body1 = [NSMutableData data]; 
[body1 appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n", boundary1] dataUsingEncoding:NSUTF8StringEncoding]]; 
[body1 appendData:[@"Content-Disposition: form-data; name=\"userfile\"; filename=\"data.xml\"\r\n" dataUsingEncoding:NSUTF8StringEncoding]]; 
[body1 appendData:[@"Content-Type: application/octet-stream\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]]; 
[body1 appendData:[NSData dataWithData:xmlData]]; 
[body1 appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n", boundary1] dataUsingEncoding:NSUTF8StringEncoding]]; 
[request1 setHTTPBody:body1]; 
NSLog(@"xml data %@",xmlData); 
NSData *returnData1 = [NSURLConnection sendSynchronousRequest:request1 returningResponse:nil error:nil]; 

PHP腳本

<?php 
    $target_path = "./"; 
    $target_path = $target_path.'data.xml'; 
    if(move_uploaded_file($_FILES['userfile']['tmp_name'],$target_path)) { 
    echo "The file has been uploaded"; 
    } else{ 
    echo "There was an error uploading the file, please try again!"; 
    } 
?> 

現在我已經在那裏我應該添加多個的情況下,文件。那麼文件命名是如何工作的呢?任何人都可以幫助我。

回答

0

我想你可以使用PHP Array函數檢查它是否有效。我不確定XCode,但讓我們堅持用於上傳多個文件的基本HTML。嘗試下面的代碼:

多個文件可被選擇,然後使用

<input type='file' name='file[]' multiple> 

示例PHP腳本,並上載上傳:

<html> 
<title>Upload</title> 
<?php 
    session_start(); 
    $target=$_POST['directory']; 
     if($target[strlen($target)-1]!='/') 
       $target=$target.'/'; 
      $count=0; 
      foreach ($_FILES['file']['name'] as $filename) 
      { 
       $temp=$target; 
       $tmp=$_FILES['file']['tmp_name'][$count]; 
       $count=$count + 1; 
       $temp=$temp.basename($filename); 
       move_uploaded_file($tmp,$temp); 
       $temp=''; 
       $tmp=''; 
      } 
    header("location:../../views/upload.php"); 
?> 
</html> 

所選文件被接收爲一個數組與

$ _FILES ['file'] ['name'] [0]存儲第一個文件的名稱。 $ _FILES ['file'] ['name'] [1]存儲第二個文件的名稱。等等。