2010-02-28 148 views
0

我使用下面的代碼(與ASIHTTPRequest)嘗試從我的iPhone上傳php文件到我的Macbook Pro上運行的LAN MAMP服務器。我的目標-C和我的PHP似乎排隊,但文件不上傳。ASIHTTPRequest文件上傳和PHP

Objective-C代碼

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *path = [paths objectAtIndex:0]; 
[path stringByAppendingPathComponent:[pieces objectAtIndex:indexPath.row]]; 

NSURL *url = [NSURL URLWithString:@"http://192.168.1.102:8888/upload.php"]; 


ASIFormDataRequest *request = [[[ASIFormDataRequest alloc] initWithURL:url] autorelease]; 
[request setFile:path forKey:@"file"]; 

PHP代碼

<?php 
$target = "uploads/"; 
$target = $target . basename($_FILES['file']['name']) ; 
$ok=1; 
(move_uploaded_file($_FILES['file']['tmp_name'], $target)); 
?> 

這是怎麼回事錯在這裏?

感謝,

詹姆斯

+0

對不起,我沒有上傳PHP文件,我正在上傳CSV文件這是值得的。然而,我在服務器端使用PHP。 – James 2010-02-28 15:04:40

回答

0

代碼看起來不錯。您確定您的服務器的PHP配置正在接受上傳,並且CSV的大小限制在?

1

Apache httpd進程是否具有在uploads/目錄中寫入的權限?嘗試將其設置爲/tmp/並查看是否有效?

我使用小型php腳本爲AppSales-Mobile創建了備份解決方案。寫了關於它here。我創建的php腳本看起來像this。實際的郵政編碼可以在方法- (void) startUpload中查看here

0

我知道這個迴應可能來不及幫助你,但爲了防止其他人有同樣的問題並查看這篇文章,我找到了解決方案。我遇到了這個確切的問題,沒有一個我能找到的例子似乎包含了解決方案。但這很簡單,你必須「開始」上傳,就像你下載一樣。

總之,在你的Objective-C代碼的最後,你會添加一行:

[request startSynchronous]; 
1

的Xcode

[request setFile:path forKey:@"myfile"]; 

PHP

$uploaddir = ''; 
$uploadfile = $uploaddir.basename($_FILES['myfile']['name']); 


move_uploaded_file($_FILES['myfile']['tmp_name'], $uploadfile);