2011-07-08 68 views
0

看來我已經解決了我的代碼在一組問題中的第一個。我正在談論的這個問題是:First Question。正如你所看到的,給出的答案只是關於Objective-C的代碼。這似乎正在正確工作。從我的iPhone應用程序上傳一個mp3到我的服務器

這個問題似乎是php代碼找不到該文件,因爲$HTTP_POST_FILES['mainfile']['name']返回null。我不確定問題出在php代碼還是objective-c代碼中。兩者都是下面:

Objective-C代碼

NSString *theUrl = @"MyServerURL";//Sorry not showing this:) 
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:[NSURL URLWithString:theUrl]]; 

[request setFile:[soundFileURL path] forKey:@"mainfile"]; 
[request startSynchronous]; 

PHP代碼

$SafeFile = $HTTP_POST_FILES['mainfile']['name']; 

$uploaddir = "uploads/"; 
$path = $uploaddir.$SafeFile; 
$mainfile = $HTTP_POST_FILES['mainfile']; 

$toWrite .= "\nThe path to which the file should be saved = " . $path . "\n"; 

if($mainfile != null){ //AS LONG AS A FILE WAS SELECTED... 
    $toWrite .= "The file is NOT NONE!\n"; 

    if(copy($HTTP_POST_FILES['mainfile']['tmp_name'], $path)){ //IF IT HAS BEEN COPIED... 
     $toWrite .= "The file was succesfully saved to the server! \n"; 
    } 
} 

$toWrite變量被寫入到一個txt文件。在這個文件中,我可以看到在第一個$toWrite$SafeFile似乎是空的。這導致我認爲該文件是不可訪問或根本沒有發送..

如果任何人都可以幫助我找出這個問題,我會最感謝!

回答

2

['name']可以爲空。上傳的文件不需要輸入的值。並且不管你是否應該永遠不要使用它,因爲這爲路徑穿越漏洞開啓了大門。

你的第二個問題可能是使用$HTTP_POST_FILES,這在PHP4中有效。現在這個數組被稱爲$_FILES。要查看您的上傳是否成功以及存在哪些描述性字段,請在嘗試其他任何方法之前使用print_r($_FILES);進行測試。

+0

print_r($ _ FILES)表示數組中有1個文件(因爲應該是這樣)。但我需要在一個變量的文件名放在數據庫中。任何想法如何做到這一點? 這只是一個測試,現在我必須過濾:) – Manuel

+0

它顯示一個'[name]'條目嗎?如果沒有,那麼你不能使用它。或者你需要調整你的obj-c代碼。 – mario

+0

$ _FILES做到了!非常感謝!! – Manuel

相關問題