-1

PHP:

// If the user accessed the page by form submittal
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $filename = $_FILES["file-input"]["name"];
    $extension = pathinfo($filename, PATHINFO_EXTENSION);
    $filesize = filesize($filename);
    $max_filesize = 524288;
// Array to hold errors
    $errors = array();

                if (!$filename) {
                    array_push($errors, "You didn't actually upload anything!");
            }
            else if ($extension != "txt") {
                    array_push($errors, "That's not a valid file-type. Please only use txt files.");
            }
            else if (filesize($filename)) {
                array_push($errors, "The txt file must not be empty. Give us a good story.");
            }

HTML:

<div class="upload-form">
<form action="" method="post" enctype="multipart/form-data">
<div class="upload">
<input type="file" name="file-input">
<span class="input-filename">Select a file...
    </span>
    <input type="button" value="Browse">
</div>

                <input type="submit" name="submit" value="Upload">
                <span class="valid-formats">Valid input: .txt files &lt;= 512 KB</span>
            </form>
        </div>

エラーが発生します:

警告: filesize(): stat failed for todo.txt in .../Dropbox/Projects/Website Projects/serverside/assignment2/index.php 行 34

警告: filesize(): stat failed for todo.txt in .../Dropbox/Projects/Website Projects/serverside/assignment2/index.php 行 46

警告: file_get_contents(todo.txt): ストリームを開くことができませんでした: No such file or directory in .../Dropbox/Projects/Website Projects/serverside/assignment2/index.php 行 77

4

4 に答える 4

2

ファイルが にありません$_FILES['file-input']['name']。これにより、クライアントがアップロードしたときのクライアントのコンピューター上のファイルのファイル名がわかります。PHPはファイルを$_FILES['file-input']['tmp_name']サーバーに保存します。このため、pathinfo動作しません (ファイルがディスク上にある必要があります)。

ドットで分割$_FILES['file-input']['name']して、最後の値を取得できます。

$parts = explode(".", $_FILES['file-input']['name']);
$extension = end($parts);
于 2013-02-20T13:40:22.827 に答える
0

これを試してみてください。

       move_uploaded_file($_FILES['file-input']['tmp_name'],"file_upload_location/".$_FILES['file-input']['name']);

それはうまくいくかもしれません。

于 2013-02-20T13:46:36.807 に答える
0

書き込み可能でないファイル/ディレクトリでこの関数を使用することに注意してください。次のような警告が表示されます。

警告: filesize() [function.filesize]: 123 行目の /var/www/xxx/yyy.php の /var/www/xxx/yyy.php の統計に失敗しました

于 2013-02-20T13:43:47.490 に答える
0

アップロードされたファイル パスは に保存され$_FILES["file-input"]["tmp_name"];ます。ファイルに対して操作を実行する場合は、それを使用する必要があります。

あなたが現在使用し$_FILES["file-input"]["name"]ているのは、あなたが望むものではありません。これには、ユーザーのマシンにあった元のファイル名が含まれています。

于 2013-02-20T13:46:02.637 に答える