2013-09-30 17 views
5

私たちは何とか大きなファイル(2MB〜5MB)になるように、壁紙のサイトを作成しようとしています。そのため、データベースの代わりにディスクスペースに、データベースへのパスのみを保存する必要があります。あなたが他の提案をしない限り、あなたがそれを行う方法に関するいくつかのアイデアを与えることができれば(私たちが今知っている方法は、アップロード機能を備えたPHPスクリプトを作成し、アップロードするPCから画像を手動で選択することです)。チュートリアルは高く評価されます。どうもありがとう!イメージを(インターネット上の)ファイルシステムに保存し、データベースへのパスを保存する方法は?

これは管理者がユーザー用ではなく画像を追加するためのものです。 注:私たちはスクリプトを開発していないので、これで使用できるものについていくつかのアイデアを得ることになります。

+1

あなたは何を試していないことがありますか?チュートリアルのためのグーグル?いくつかの行を書く?足場を作成して、適切な解決策を見つけるのを手伝ってください。 –

+0

あなたはあなたが提案したようにそれを行うべきです。問題が発生した場合は、戻って助けを求めてください。コード例を含めてください。 – Sven

+0

ファイルをアップロードするのに最適な方法ですか? –

答えて

4

フォーム、

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

はPHPパート

<?php 
if($_FILES['image']['name']) 
{ 
    $save_path="FOLDER_PATH_TO_SAVE_UPLOADED_IMAGE"; // Folder where you wanna move the file. 
    $myname = strtolower($_FILES['image']['tmp_name']); //You are renaming the file here 
    move_uploaded_file($_FILES['image']['tmp_name'], $save_path.$myname); // Move the uploaded file to the desired folder 
} 

$inser_into_db="INSERT INTO `database`.`table` (`folder_name`, `file_name`) VALUES('$save_path', '$myname'))"; 

?> 
+0

です。ありがとう! –

+2

そして@Paulがここに別の答えで述べたようあなたには、いくつかのロジックでは、あなた自身の上の各ファイルの名前を生成することを確認してくださいは、例えば、PHPの微小時間のために言うと、 '$ myname'変数にそれを使用します。ここで入力した答えは単なる例に過ぎません。 –

6

アップロードされたファイルごとに、UUIDを生成し、ディスク上のファイル名に使用します。これにより、衝突、ファイル名の保護、パスの迂回脆弱性が回避されます。

(1, "Green field", "0D729DCD-5116-4480-81CE-90A0380B557A.png")のような値を持つ(id, description, filename)のような表があります。

次に、1つのフォルダにファイルが多すぎるという問題を回避したいと思っています。多くのFSのファイルシステムの制限を打ちます。

この問題を回避するには、ファイル名の最初の数文字に基づいてディレクトリを作成します。 0D729DCD-5116-4480-81CE-90A0380B557A.pngの場合は、/0/D/7/0D729DCD-5116-4480-81CE-90A0380B557A.pngに保存します。

+0

大変感謝しています@Paul、私は最初の文字の代わりに月や何かのようなフォルダ名を使うことができると思いますが、すばらしい提案です。実際には –

関連する問題