1

私はばかげたことをしていると確信していますが、これを確認して再確認しました。これは私の写真アップローダーで、写真ファイル自体をフォルダー (「reccs」という名前) に保存し、写真の名前を DB の行に保存することを目的としています。DB 部分は完全に機能しますが、私の写真がフォルダーに表示されません。エラーは表示されず、動作しているように見えます (「成功」メッセージが表示されます)。あっ!

コードは以下です。洞察をありがとう。

$link = mysql_pconnect($host, $username, $password);
$db = mysql_select_db ($dbname);

$target = "reccs/";
$target = $target . basename($_FILES['photo']['name']);
$pic=($_FILES['photo']['name']);

mysql_query("UPDATE login SET recc = '$pic' WHERE username = '".$_SESSION['user']['username']."'");

if(move_uploaded_file($_FILES['photo']['tmp_name'], $target))
{

echo "The file has been uploaded, and your information has been added to the directory";
 }
else {

echo "Sorry, there was a problem uploading your file.";
}
4

4 に答える 4

0

同じ名前で写真を保存することは非常に悪い習慣です。写真をアップロードする前に、以下を行うことをお勧めします。

  • 名前と拡張子を抽出します。
  • ここで、拡張子が有効かどうかを確認します。有効な場合はさらに進んでください
  • 最初にトリミングしてから、複数のスペースをすべて1つのスペースでクリアします。
  • ここで、ファイル名を小文字にし、すべてのスペースをfilenameで変更し_、timestampにfilenameを追加します。
  • すべての特殊文字を削除します( ', " , \ etc
  • 次に、その拡張子を持つファイル名を追加します。

次にデータベースに保存します

于 2012-08-10T04:45:40.507 に答える
0

reccsの前にスラッシュを付ける必要がありますか?move_upload_fileが成功したことがわかった後は、ifステートメント内でmysql更新クエリの方が適しているように見えます。

于 2012-08-10T04:21:49.190 に答える
0

試す;

if(move_uploaded_file($pic, $target))
于 2012-08-10T04:24:51.833 に答える
0

サーバーの設定によっては、$target を相対パスではなく絶対パスに設定する必要がある場合があります。少なくともホーム ディレクトリに対して絶対パスである必要があるため、reccs がルート サイト ディレクトリのディレクトリである場合は、$target を /reccs/file.name に設定します。

これは、デフォルトでは、ホスト レベルではなくルート (OS) レベルにある /tmp にファイルがアップロードされるため、/tmp からの相対パスは一般的に無意味です。

于 2012-08-10T04:38:43.310 に答える