2009-04-09 35 views
0

私は自分のウェブサイトの管理パネルのユーザーに写真のアップロードを許可しています。画像の有効性をチェックしてフォルダに保存する簡単なプロセスです。その画像のデータベースレコードのカップルは、後でそれを取得できるようにするには、私の保存機能が以下のとおりである...私は別の関数で構築名前のフォルダに画像を保存し、アップロードし、 機能:画像を保存するためのベストプラクティス

My_HTMLInputFile.PostedFile.SaveAs(HttpContext.Current.Server.MapPath("~/photos\" & pta.FileName)) 

同じ画像のデータベースレコードを作成する関数:

Public Function InsertPhoto() As Integer 
     Dim pta As New GKPTableAdapters.tblPhotosTableAdapter 
     Return pta.InsertPhoto(PhotoCaption, PhotoDescription, ("http://www.myURL.com/photos/" & FileName), IsDefault, IsPicture) 
    End Function 

私は自分のやっていることがベストプラクティス違反に満ちていることを知っていますので、私が何をすべきかを指摘してください。後でユーザーが写真を削除する可能性があることを忘れないでください。画像のデータベースとファイル、そしてパスの全問題が私を混乱させています:P

ありがとうございます。

答えて

1

私が賭けからすぐに気づいたことは、あなたがイメージへの完全なパスをハードコーディングしていることです。

私は、イメージ名を格納し、その後、私はアプリケーション

でそれを表示するときに、ユーザーが自分のアプリケーションを介してファイルを削除できるようにする場合は、あなたがレコードを削除する必要があり、相対パスを付加したいですデータベース、その後、あなたはまた、ファイル名の生成を見てみたいことがありFile.Delete method

0

を使用して、ファイル自体を削除します。たとえば、画像データのmd5ハッシュをファイル名として使用すると、人物が重複した画像をアップロードするのを防ぐことができます。画像の「一意の」名前を生成する方法について考える必要もありません。公衆が見るべきではないと、あなたの名前付けポリシーが予測可能であることをそこに画像がある場合は、インターネットに直接あなたの写真のディレクトリを公開

は悪い考えかもしれません。人々はイメージのURLを推測し、見えないものにつまずくでしょう。

+0

実際にすべての画像がありませんので心配あり、一般に公開されている、と私のネーミング機能は、単にデータの時間がかかり、第二、それに拡張子を追加し、ファイルの名前を逆転していないので、何の重複.. – Maen

関連する問題