1

PHPでアップロードするファイルを取得できないようです。私が言えることから、すべてがチェックアウトします。私は古い教科書を掘り起こし、例をテキストから直接コピーしましたが、それでもうまくいきませんでした。

最初は、ファイルが保存されているディレクトリのアクセス許可に問題があると思っていたので、アクセス許可を777に変更しましたが、まだ何もありません。誰かが何か提案があれば、私はすべての耳です:/

コード(HTML)は次のとおりです。

  <form action="upload.php" method="post" enctype="multipart/form-data">
    <input type="file" name="file1">
        <br/>
    <input type="submit" value="Upload">
  </form>

PHPファイル:

<?php
$tmp_name = $_FILES['file1']['tmp_name'];
$path = getcwd() . DIRECTORY_SEPARATOR . 'images';
$name = $path . DIRECTORY_SEPARATOR . $_FILES['file1']['name'];
$success = move_uploaded_file($tmp_name, $name);
if($success) {
    $upload_message = $name . ' has been uploaded.';
    echo "$upload_message";
} else {
    echo "something went wrong :(";
}
?>
4

3 に答える 3

2

移動を試みる前にアップロード エラーを確認する必要があります。その後、問題を追跡できます: http://www.php.net/manual/en/features.file-upload.errors.php

基本的な例を次に示します。

<?php
error_reporting(-1);

$uploaddir = './images/';

// Check for upload attempt
if(isset($_FILES['file1'])){
    $uploadfile = $uploaddir.basename($_FILES['file1']['name']);

    // If no error
    if($_FILES['file1']['error'] == 0){
        //Attempt to move
        if (move_uploaded_file($_FILES['file1']['tmp_name'], $uploadfile)) {
            echo "File is valid, and was successfully uploaded.";
        }else{
            echo 'Error moving file.';
        }
    } else {
        // Has error
        $errors = array(0=>'OK',
                        1=>'UPLOAD_ERR_INI_SIZE',
                        2=>'UPLOAD_ERR_FORM_SIZE',
                        3=>'UPLOAD_ERR_PARTIAL',
                        6=>'UPLOAD_ERR_NO_TMP_DIR',
                        7=>'UPLOAD_ERR_CANT_WRITE',
                        8=>'UPLOAD_ERR_EXTENSION'
                        );
        echo "Error: ".$errors[$_FILES['file1']['error']];
    }
}

ところで。アップロードの許可には十分注意してください。

于 2012-09-18T01:25:41.670 に答える
1

upload_tmp_dir への書き込み権限があることを確認し、php.ini の post_max_size と upload_max_filesize の制限を確認して、アップロードしようとしているファイルよりも大きくなるようにする必要があります。また、 $_FILES にはエラー情報が含まれており、それをダンプして、期待どおりに何が起こっていないかについての詳細情報を取得します。

于 2012-09-18T00:55:09.880 に答える
0

これが機能するかどうかはよくわかりません。まだ試していません。

<?
$uploadpath = '../images/';

if ($_FILES["file1"]["error"] > 0)
    {
    echo "Return Code: " . $_FILES["file1"]["error"] . "<br />";
    }

  else
    {
echo "Upload: " . $_FILES["file1"]["name"] . "<br />";
    echo "Type: " . $_FILES["file1"]["type"] . "<br />";
    echo "Size: " . ($_FILES["file1"]["size"] / 1024) . " Kb<br />";
    echo "Temp file: " . $_FILES["file1"]["tmp_name"] . "<br />";
    }

    if (file_exists($uploadpath . $_FILES["file1"]["name"]))
      {
      echo $_FILES["file"]["name"] . " already exists. ";
      }
    else
      {
      move_uploaded_file($_FILES["file"]["tmp_name"],
      $uploadpath . $_FILES["file"]["name"]);
      echo "UPLOAD SUCCESS!";
      }

?>

出典:W3school

于 2012-09-18T02:39:48.893 に答える