1

画像をアップロードしてデータベースに保存しようとしています。コードについて言及しましたが、うまくいきません。バグを見つけることができません。誰かがバグを見つけることができるかどうかを確認してください。コードは次のとおりです。

<?php

$name=$_REQUEST['name'];
$email=$_REQUEST['email'];

if($_REQUEST['submit'])
{
    if(($_FILES['file']['type']=="image/jpeg" or $_FILES['file']['type']=="image/pjpeg" or $_FILES['file']['type']=="image/gif") and ($_FILES['file']['size']<300000))
    {
        if($_FILES['file']['error']>0)
        {
            $err=" ERROR :: ".$_FILES['file']['error'];
        }
        else
        {
            echo "Upload :".$_FILES['file']['name']."<br/>";
            echo "Type: ".$_FILES['file']['type']."<br/>";
            echo "Size: ".($_FILES['file']['size']/1024)."Kb<br/>";
            echo "Stored in: ".$_FILES['file']['tmp_name']."<br/>";

            move_uploaded_file($_FILES['file']['tmp_name'],"upload/".$_FILES['file']['name']);
            echo $_FILES['file']['name'];
            echo $_FILES['file']['tmp_name']."qwerty";

            $n=3000;
            $fo=fopen("upload/".$_FILES['file']['name'],"r");
            $fr=fread($fo,$n);

            mysql_query("update user set pic='$fr' where id='$id'");

        }
    }
    else
    {
        $err=" ERROR :: Invalid Image";
    }

    mysql_query("update user set name='$name' where id='$id'");
    mysql_query("update user set email='$email' where id='$id'");


}

$sql="select * from user where id='$id'";
$con=mysql_query($sql);
list($idR,$nameR,$emailR,$pwdR,$dateR,$picR)=mysql_fetch_array($con);

?>



<body>
<form action="" method="post" enctype="multipart/form-data">

    <table>
        <tr>
            <td colspan="2"><?php echo $err; ?></td>
        </tr>
        <tr>
            <td>Name:</td>
            <td><input type="text" name="name" value="<?php echo $nameR ?>" /></td>
        </tr>
        <tr>
            <td>Email:</td>
            <td><input type="text" name="email" value="<?php echo $emailR ?>" /></td>
        </tr>
        <tr>
            <td><label for="file">Upload or Change Pic:</label></td>
            <td><input type="file" name="file" id="file" /></td>
        </tr>
        <tr>
            <td colspan="2"><input type="submit" name="submit" value="Save"/></td>
        </tr>

    </table>    
</form>
</body>

私のコードはファイルをアップロードすることさえできません。次のことを試みたときecho、それらが空であることがわかりました。

   echo "Name:".$_FILES['file']['name']."<br/>";
   echo "Type: ".$_FILES['file']['type']."<br/>";
   echo "Size: ".($_FILES['file']['size']/1024)."Kb<br/>";
   echo "Stored in: ".$_FILES['file']['tmp_name'];

上記のフィールドはすべて空です。

4

5 に答える 5

1

これがどのように機能するかはわかりませんが、機能しませんでした。値がnone/emptyであるHTMLため、問題はコードのどこかにあると思います。$_FILESフォームタグから値を取得していません。問題を解決するために私の答えが正しくないかどうか、またはコンピュータの科学やその他の主題からこの難しい問題を解決する方法を修正して、エラーまたは正常にフォーム化されていないかどうかを確認してください。

于 2012-10-31T04:15:37.417 に答える
0

$_POSTと$_FILESの両方が空の場合は、最大投稿サイズini('post_max_size')を超えています

php.iniには、個々のファイルの最大値('upload_max_filesize')やすべてのアップロードの最大値('post_max_size')など、いくつかの設定があります。これらのini設定が正しく設定されていることを確認してください

編集した場合は構文に注意してください。M、K、またはG(KB、MB、GBではない)を処理するときは注意が必要です。サーバーのビットサイズを超えないようにしてください。つまり、サーバーで40億バイトを超えないようにしてください。 32ビットサーバー。


$ _FILESが空であるが、$_POSTではないその他の原因。ファイルをアップロードするための十分な空き容量がないか、一時ディレクトリへの書き込み権限がありません。/ tmpに十分なスペースがあり、apache/phpユーザーとして書き込むことができることを確認してください。

于 2012-06-21T05:53:05.607 に答える
0

これを試して!

<?php

if(isset($_POST['submit']) && $_FILES['file']['size'] > 0)
{
    // Data
    $file_name = $_FILES['file']['name'];
    $tmp_name  = $_FILES['file']['tmp_name'];
    $file_size = $_FILES['file']['size'];
    $file_type = $_FILES['file']['type'];

    // Check
    $type   = array(
        'image/jpeg',
        'image/gif',
        'image/png',
    );
    $size   = 300000;

    if(in_array($file_type, $type) AND $file_size > $size)
    {
        echo 'Ooops! File type must be JPG, GIF or PNG. Or file size too big';
        exit();
    }

    // Is error?
    if ($_FILES["file"]["error"] > 0)
    {
        echo 'Upload Error';
        exit();
    }
    else
    {
        echo 'File Name : '.$file_name.'<br />';
        echo 'File Size : '.($file_size / 1024).' Kb<br />';
        echo 'File Type : '.$file_type;
    }
} 
?>

<form action="" method="post" enctype="multipart/form-data">
<input type="file" name="file" id="file" />
<input type="submit" name="submit" value="Save"/>  
</form>
于 2012-06-21T05:20:53.420 に答える
-1

コードを独立した .php ファイルに移動したときに機能しました。そして、アップロードする必要があるときは、独立したアップロード コードが書かれているページへのリンクを提供しました。これの背後にある理由はわかりませんが、これが私がそれを解決した方法です。

于 2013-08-09T15:15:29.230 に答える
-2

うーん....この行を変更してみてください

if($_REQUEST['submit'])

することが

if(isset($_REQUEST['submit']))

そして、私は、このコードだと思います

if(($_FILES['file']['type']=="image/jpeg" or $_FILES['file']['type']=="image/pjpeg" or $_FILES['file']['type']=="image/gif") and ($_FILES['file']['size']<300000))

に簡略化できます

if(ereg("jpeg|pjpeg|jpg|gif|png", $_FILES['file']['type']) AND $_FILES['file']['size']<300000)

幸運を...

于 2012-06-21T05:05:08.983 に答える