使用PHP上传文件

时间:2010-06-24 11:33:18

标签: php file-upload

我正在使用PHP中的API将文件从我自己的服务器上传到soundcloud.com:

if (isset($mime)) {
        $tmp_file = $tmp_path . $_FILES['file']['name'];

        // Store the track temporary.
        if (move_uploaded_file($_FILES['file']['tmp_name'], $tmp_file)) {
            $post_data = array(
                'track[title]' => stripslashes($_POST['title']),
                'track[asset_data]' => realpath($tmp_file),
                'track[sharing]' => 'private'
            );

            if ($response = $soundcloud->upload_track($post_data, $mime)) {
                $response = new SimpleXMLElement($response);
                $response = get_object_vars($response);
                $message = 'Success! <a href="' . $response['permalink-url'] . '">Your track</a> has been uploaded!';

                // Delete the temporary file.
                unlink(realpath($tmp_file));
            } else {
                $message = 'Something went wrong while talking to SoundCloud, please try again.';
            }
        } else {
            $message = 'Couldn\'t move file, make sure the temporary path is writable by the server.';
        }
    } else {
        $message = 'SoundCloud support .mp3, .aiff, .wav, .flac, .aac, and .ogg files. Please select a different file.';
    }
}

这是我的代码。临时路径为http://122.166.23.38/dev3/bids4less/funkeymusic/upload 它有权限777(-rwxrwxrwx)。

但它显示:

  

无法移动文件,请确保服务器可以写入临时路径。

如何解决此问题?

4 个答案:

答案 0 :(得分:3)

我相信你在php中的临时路径应该指向服务器上的目录,而不是http位置。

答案 1 :(得分:1)

这个问题太旧了,但无论如何它都会弹出......

您不必移动任何东西,也不必取消链接。 只需从它的临时位置读取上传的文件。

将复杂任务拆分为较小的块以便找到错误非常方便。尝试首先发送静态文件,然后测试文件上载,然后将这些任务加入到最终应用程序中。

答案 2 :(得分:0)

文件大小是多少,上传文件需要多长时间? 你能否验证这2个php.ini值:

  • max_execution_time
  • 的post_max_size

也许PHP的上传工具在某种程度上受到限制? PHP是否在safe_mode?

答案 3 :(得分:0)

尝试S_SERVER您将从此网址http://php.net/manual/en/reserved.variables.server.php

获得简要说明

以下是查找服务器地址的示例

尝试一个很好的例子来解决你的方法