-2

別の初心者の質問に戻ります。PHP を学ぶために作成しているブログに、ユーザーが自分のアバターをアップロードできるようにするドキュメントに取り組んでいます。私はこのドキュメントに 2 日間取り組んでおり、6 時間以上かけて検索し、さまざまなことを修正しようとしましたが、これを乗り越えることができません。

if(move_uploaded_file($_FILES['avatar']['name'], $target)){ 

    //good message
    echo "Your avatar was successfully uploaded."; 
    }else{
    //bad message
    echo "Your avatar couldnt be uploaded, please contact an admin."; 
    }

さまざまな解決策を約1時間試した後、最終的に「悪いメッセージ」を送信しますが、「悪いメッセージ」が表示される理由はよくわかりません。

完全なコード:

<?php
session_start();

if (isset($_SESSION['username'])){


if (isset($_POST['submit']) && isset($_FILES['avatar'])) {
        $con = mysql_connect("localhost","root","");
        if (!$con){
            die('Could not connect: ' . mysql_error());
        }

    mysql_select_db('webserver', $con);

    $username = $_SESSION['username'];

    $query = "SELECT * FROM users WHERE username = '$username'";

    $result = mysql_query($query);                   
    $row = mysql_fetch_array($result);

    $id = $row['id'];

    //Directory to save stuff
    $target = "images/useravatars"; 
    $target = $target . basename($_FILES['avatar']['tmp_name']);

    //Save the avatar
    if(move_uploaded_file($_FILES['avatar']['name'], $target)){ 

    //good message
    echo "Your avatar was successfully uploaded."; 
    }else{
    //bad message
    echo "Your avatar couldnt be uploaded, please contact an admin."; 
    }
}else{
echo "38";
}
}
?>

<form enctype="multipart/form-data" action='uploadavatar.php' method='POST'>
    <table>
        <tr>
            <td>
            Upload an avatar:
            </td>
        </tr>
            <td>
            <input type='file' name='avatar'>
            </td>
        </tr>
    </table>
    <p>
        <input enctype='multipart/form-data' type='submit' name='submit' value='Submit'>
    </p>
</form>

ところで、申し訳ありませんが、そこにはおそらく役に立たないコードがたくさんあります。エラーが発生するのに十分な距離まで取得するのに多くの時間を費やしました。

4

2 に答える 2

0

ここでの問題はmove_uploaded_file()、間違った方法で使用していることです。最初のパラメーターには、拡張子を含むファイル名が必要 mypic.jpgです。. 2 つ目は、そのファイルをアップロードする宛先が必要です。

あなたのコードに関しては、

これを交換して、

//Directory to save stuff
$target = "images/useravatars"; 
$target = $target . basename($_FILES['avatar']['tmp_name']);

//Save the avatar
if(move_uploaded_file($_FILES['avatar']['temp'], $target)){ 

// I'd assume that dirname(__FILE__) refers to your root

//Directory to save stuff
$destination = sprintf('%s/images/useravatars/%s', dirname(__FILE__), $_FILES['avatar']['name']); 

//Save the avatar
if (move_uploaded_file($_FILES['avatar']['tmp_name'], $destination)) { 
于 2013-10-02T06:56:02.590 に答える