2012-04-26 6 views
1

画像を自分のサーバーに保存し、データベースにインデックスを付けたいので、後でユーザー名や画像をアップロードした人から収集した情報で検索できます。私は自分のプログラムがアップロード中にデータベースにアップロードの場所を保存するようにしたいと思っていました。私はこれが可能だとはかなり確信していますが、私は始める場所が必要なPHPへのヌービです。PHPを使って自分のサーバに画像を保存し、mysqlでそれらのインデックスを作成するにはどうすればいいですか?

答えて

1

手順は次のとおりです。

は、あなたがそれについて移動することができますいくつかの方法Theresの - あなただけのフォーム内の画像を選択して、単にユーザーデータと一緒に画像を保存しようとしているかどうかAJAXアップローダーを使用したりします。 ..

しかし、AJAXのための単純なプロセスは次のようになります...

  • 画像をアップロード
  • リターンイメージ名
  • 画像がデータベースに

そうでない場合

  • 押して保存
  • アップロード画像を保存されているデータベースからの検索画像参照を - ユーザーが
  • が検索を参照して、データベースにイメージ名を保存
  • 転送が成功した場合は、ユーザー情報と共にファイル名を保存してください。
  • 私たちによってデータベースが検索されています参照してそのユーザーに画像の名前を取得する
2

ファイルのアップロードとメタデータのデータベースへの格納は、それだけではありません。あなたのアプリケーションをハイジャックから守ってください。

  • 画像をフォームでアップロードしてください。

  • メタデータをデータベースに保存している間に、失敗したアップロードやアップロードを処理する方法を確認してください。 (そうでなければdiscspaceが不足したり、関連するファイルなしでデータベースエントリを避けるために、ガベージコレクションのようなものを使用。)

  • 常にユーザーのみが、使用セッションクッキー

  • メイクをアップロードすることができるはず登録あなたのサーバーが有効なセッションの有効なフォームデータのみを受け入れることを確認してください!

  • サーバーにし、あなたのスクリプトがそれに反応するが、外部には表示されませんしましょう可能であれば実行しているウイルススキャナを持っていることを確認してください。

  • 名前を変更!サーバ上のファイルは、ファイルタイプの接尾辞(この情報をデータベースに格納し、送信するmimetypeを含む)を消去します。多分圧縮を使用します。

  • ファイルが保存されている場所をユーザーに知らせることは絶対にありません。ダウンロードスクリプトを使用して、ファイルパスに関する情報を外部に隠すことができます。

編集:

これは完全なリストではなく、唯一のあなたにそれのように見える可能性がどのように印象を与えます!

アップロード:

...などのような

  • ビルドデータベーステーブルのアップロード・スクリプトをビルドします。

    ファイル

    uid, id, filename, real_filename, suffix, content_length, datetime_upload

    拡張を(可能性のリスト)

    uid, id, suffix, mimetype

    USER->ファイル関係

    uid, id, user_id, file_id

  • アップロード・スクリプトが

  • メイク有効なユーザー・セッションまたは出口から呼ばれていることを確認しますユーザーがデータ(ロールモデル)を保存する権利を持っているかどうか確かめてください。

  • フォームを受信し、フォームデータが有効かどうか(変数、キャプチャなど)、または終了するかどうかを確認する

  • ファイルタイプが許可されているかどうかをチェックし、オプションでバイナリチェック(ヘッダーのファイルタイプ)および/最後に

  • ファイルの空のエントリを構築し、FILE_IDを受け取り、そうでない場合は新しいファイル名、FEを構築

  • を、エラーを保存する前に、ファイルのチェックディスク

  • $new_filename = $file_id . '-' . md5($old_filename);

  • ストアデータOK格納されている場合、データベースエントリを更新し、そうでない場合は、エントリとエラー

  • を削除ストアuser_id-のエントリは>

をFILE_ID

ダウンロード:

次のようなダウンロードスクリプトを作成します。

  • ユーザーはデータのこの部分(ロールモデルとUSER->ファイルの関係)をダウンロードする権利を持っているか確認し、有効なユーザー・セッションまたは出口から

  • をダウンロードスクリプトが呼び出されていることを確認しますまたは終了

  • は、いくつかの送信アクション

  • を行うには、古いファイル名、サイズ、およびMIMEタイプを取得し、ファイルが何かの差分として受け入れられ、実行されることを避けるためにヘッダに格納されているMIMEタイプをブラウザにファイルを送りますerent(f.e. .exe)をクライアント側にインストールします。右のダウンロードヘッダー、content-lengthとcaching-headerを追加します。バイナリデータストリームを正しいファイルから追加してください。

+0

セッションクッキーは細かい実装のようです。有効なセッションを要求することは、どのように重要です。クッキーは唯一の方法です。 – Romain

関連する問題