2
<?php

class File_Streamer {

プライベート $fileName;
プライベート $contentLength;
プライベート $path;

    public function __construct()
    {
        if (array_key_exists('HTTP_X_FILE_NAME', $_SERVER) && array_key_exists('CONTENT_LENGTH', $_SERVER)) {
            $this->fileName = $_SERVER['HTTP_X_FILE_NAME'];
            $this->contentLength = $_SERVER['CONTENT_LENGTH'];
        } else throw new Exception("Error retrieving headers");
    }

    public function setDestination($p)
    {
        $this->path = $p;

    }

    public function receive()
    {
        if (!$this->contentLength > 0) {
            throw new Exception('No file uploaded!');
        }

        file_put_contents(
            $this->path . $this->fileName, 
            file_get_contents("php://input")
        )
        ;
        return true;
    }
}
?>

ファイルをアップロードするためのこのコードがありますが、ファイルを CHMOD 755 でアップロードしたいので、助けが必要です。

4

1 に答える 1

1

2 つのオプション:

  1. 最初にファイルを完全にアップロードしてから、chmod します。
  2. 空のファイルを作成し、それを chmod してから、データをそこに入れます。

PHP では、ファイルに対して chmod を実行するのはかなり簡単です。

chmod("/directory/file", 0755);  

mode の正しい値を取得するには、10 進数ではなく 8 進数を使用する必要があることを覚えておいてください。上記の例に示すように、「755」の前に「0」を追加してください。

あなたのコードでは、次のようにします:

public function receive()
{
    ...

    chmod($this->path . $this->fileName, 0755); 
    return true;
}

PHP の CHMOD コマンドに関する詳細は、http://php.net/manual/de/function.chmod.phpにあります。

于 2013-06-26T16:48:58.150 に答える