-2
<td class="reg-txt-left">Profile Picture:</td>
<td class="reg-input-right">
    <form action="profile_save_upload.php" method="post" enctype="multipart/form-data">
        <?php 
        echo "<img src=\"../user/".$_SESSION['profileEmail']."/images/".$_SESSION['profilePic']."\" alt='Profile Picture' width='200px' height='200px' />" 
        ?>
        <input type="file" name="file"   />
        <input type="submit" name="submitProfilePic" id="button" value="Change Profile Picture" />
    </form>
</td>

そして、ここに profile_save_upload.php があります

<?php session_start();
 if(isset($_POST['submitProfilePic'])){
 /*file saving*/
   if ($_FILES["file"]["error"] > 0){
     echo "Return Code: " . $_FILES["file"]["error"] . "<br>";
   }
   else{
     if (file_exists("../user/".$_SESSION['profileEmail']."/" . $_FILES["file"]["name"]))
       {
       include('../includes/dbcon.php');
    /*update database*/
    $sql = mysql_query("UPDATE users
                        SET picture = '".$_FILES["file"]["name"]."'
                        WHERE email = '".$_SESSION['profileEmail']."'");
    header("Location: profileEdit.php");
  }
  else{ 
    move_uploaded_file($_FILES["file"]["tmp_name"], "../user/".$_SESSION['profileEmail']."/" . $_FILES["file"]["name"]);
    include('../includes/dbcon.php');

    $sql = mysql_query("UPDATE users
                        SET picture = '".$_FILES["file"]["name"]."'
                        WHERE email = '".$_SESSION['profileEmail']."'");
    header("Location: profileEdit.php");

    }
   }
 }
?>

これはフォルダの階層です

 includes
     dbcon.php
 site
     profileEdit.php
     profile_save_upload.php
 user
     user1
        [the image supposed to be moved here]

画像ファイル名はデータベースに保存されていますが、フォルダーには保存されていません。

誰かがどこが間違っているのか考えていましたか? 前もって感謝します

4

2 に答える 2

1

拡張子を確認する方法は次のとおりです (必要な場合)。

if(is_uploaded_file($_FILES['imgfile']['tmp_name']))
{
    $fileExtension = array('jpg','jpeg','gif','png');
    $file_name = pathinfo($_FILES["imgfile"]["name"]);
    $extension = strtolower($file_name['extension']);
    if(!in_array($extension, $fileExtension))
    {
        $error .= "<span class='error'>invalid file format !</span><br>";
    }
}

.

エラーが見つからない場合のアップロード方法は次のとおりです。

$tmp_file = '';       
if(is_uploaded_file($_FILES['imgfile']['tmp_name']))
{
    $file_name = pathinfo($_FILES["imgfile"]["name"]);
    $extension = strtolower($file_name['extension']);
    $tmp_file = substr($file_name['filename'], 0, 50).'_'.time().'.'.$extension;

    $uploaddir = 'user_image/';
    $uploadfile = $uploaddir.$tmp_file;

    move_uploaded_file($_FILES['imgfile']['tmp_name'], $uploadfile);
    //list($width, $height) = getimagesize($uploadfile);

    $fileType = $_FILES['imgfile']['type'];
    $fileSize = $_FILES['imgfile']['size'];
}
于 2013-04-12T12:28:22.553 に答える
1
move_uploaded_file($_FILES["file"]["tmp_name"], "../user/".$_SESSION['profileEmail']."/" . $_FILES["file"]["name"]);
include('../includes/dbcon.php');

$sql = mysql_query("UPDATE users
                    SET picture = '".$_FILES["file"]["name"]."'
                    WHERE email = '".$_SESSION['profileEmail']."'");

$_FILES["file"]["name"]ファイル名です。SQL クエリを見てください。その名前だけを保存します。次のようにクエリを作成できます。

UPDATE users SET picture = '".$basepath."/user/".$_SESSION['profileEmail']."/" . $_FILES["file"]["name"]."'...

$basepath は、親フォルダーへのパスですuser/

于 2013-04-12T12:29:09.730 に答える