从我的iPhone应用程序将mp3上传到我的服务器

时间:2011-07-08 11:06:52

标签: php objective-c

似乎我已经用我的代码解决了一系列问题中的第一个问题。我正在谈论的问题是这个问题:First Question。正如您所看到的,给定的答案仅与Objective-c代码有关。这似乎现在正常工作。

问题似乎是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 {{1}}似乎是空的。这导致我认为文件无法访问或根本无法发送..

如果有人能帮我解决这个问题,我会非常感激!

1 个答案:

答案 0 :(得分:2)

['name']可以为空。上传的文件不需要filename=值。无论如何,你都不应该使用未经过滤的,因为这为路径遍历漏洞打开了大门。

您的第二个问题可能是使用$HTTP_POST_FILES,这在PHP4中有效。现在这个数组被称为$_FILES。要查看您的上传是否成功以及存在哪些描述性字段,请先尝试使用print_r($_FILES);进行测试。