1

会社のユーザーがwinform HTMLエディターを使用して、特定の顧客向けにテキストと画像を挿入するプロジェクトがあります。顧客はこの情報を Web サイトで確認します。

これを処理する最良の方法は何ですか? 厳密に HTML テキストであれば、すべてをデータベースに保存でき、表示に問題はありませんでした。しかし、従業員は写真を表示する機能を望んでいます...


  1. Web サイトと winform プログラムが参照できるように、画像をファイルとして公共の場所に保存しますか? ここでの問題は、写真を保管するのに最適な公共の場所はどこかということです。Web サーバーは、誰もアクセスできないロックダウンされたサーバーになります。ASP.Net の非ローカル ディレクトリからファイルを取得できますか?

  2. 画像をデータベースに保存し、画像ソース タグをデータベースの画像に置き換えるほどプログラムをスマートにしますか? これは難しいかもしれないと思いました(間違いなくウェブ上で...誰かがこれを提案した場合、winformとウェブでこれを行う方法についてC#の例をいくつか教えてもらえますか?)

私は他の誰かがどこかでこれをしなければならなかったことを知っています...

4

5 に答える 5

5

データベースを使用してローカル イメージへのパスを保存することをお勧めします (セットアップで可能であれば)。

たとえば、物理イメージは次のようなパスに保存されます。

/App_Themes/Web/images/userfiles/YOURIMAGENAME.jpg

以下をデータベースに保存するだけです

YOURIMAGENAME.jpg

これは、次のようなものを持つことができることを意味します。

<asp:Image ID="imgImage" runat="sever" />

protected void Page_Load(object sender, EventArgs e)
{
    //Your data-access code here

    //image.ImageName is provided by your data access code.
    imgImage.ImageUrl = string.Format("/App_Themes/Web/images/userfiles/{0}", image.ImageName)
}
于 2009-11-03T09:09:54.350 に答える
0
  1. はい、これらの画像へのアクセスを制限する予定がない場合。その場合は、それらを www ルートから離れた場所に保管し、スクリプトでブラウザーに送信してください。

  2. いいえ。画像をディスクに保存し、それらへの相対パスをDBに保存することをお勧めします。データベースは、ファイルを保存するのに適切な場所ではありません。

于 2009-10-31T19:34:48.750 に答える
0

画像をデータベースに簡単に保存してから取得できます。データベースから画像を表示するには、asp.net ページ (この記事を参照) またはHttpHandlerを使用できます。

ファイルをローカル フォルダーに保存することもできます。通常の読み取り/書き込みファイル操作を使用できます。これを機能させるには、ASP.NET ユーザー ([Local Machine]\ASPNET または NETWORK SERVICE) がそのフォルダーへの読み取り/書き込みアクセス権を持っている必要があります。リモート フォルダを使用するのは、よりトリッキーであり、そうしようとするとセキュリティ ホールが作成される可能性があります。

結論として、最善の解決策はローカル フォルダーを使用することだと思います。これが不可能な場合は、エキゾチックなソリューション (FTP、ユーザーの偽装、画像をアップロード/ロードするための Web サービス) を避け、データベースを使用してください。

于 2009-11-03T08:48:41.570 に答える
0

ファイル システムを使用できない場合は、Amazon S3などのクラウド ストレージにイメージを保存することを検討してください。

S3 オブジェクトをパブリック読み取り、プライベート書き込みになるように構成して、ソフトウェアだけがイメージを S3 に追加でき、Web 上のすべてのユーザーがイメージを表示できるようにすることができます。セキュリティ要件に応じて、WinForms アプリで S3 シークレット キーをエンコードして PUT URL を作成するか、アプリ サーバー上でユーザーを認証し、サーバー上のシークレット キーを使用して PUT URL を作成する単純な Web サービスを作成することができます。その後、PUT URL をクライアントに返すことができ、クライアントは画像データのアップロードに使用できます。

S3 を使用して、HTTP PUT を使用して画像をアップロードすると、エディターと Web ブラウザーの両方が HTTP GET を使用して通常どおり画像にアクセスします。利用可能な C# ライブラリと、S3 にアクセスするための多数のサンプル コードがウェブ上にあります。

実際には、HTML データでも同じことができます。

S3 に関連するコストがあることに注意してください (価格を参照) が、コストが範囲内にあると仮定すると、この種の問題に対する優れたソリューションとなります。

于 2009-11-05T20:56:03.250 に答える
0

これを見てください

DB への画像の保存 - 賛成か反対か?

およびこの主題に関する他の古い質問。私の意見では、どちらの選択も可能で正当であり、両方の組み合わせ (データベースへのファイル参照の保存) も同様です。次のようなプロジェクトの特定の状況 (提供しなかったもの) に基づいて決定を下す必要があります。

  • 予想される画像/ファイルの数
  • BLOB の保存に関して、使用する特定のデータベースの機能とパフォーマンスに関する考慮事項
于 2009-11-02T16:29:31.533 に答える