0

私は自分のウェブサイトに表示したい、自分のネットワーク上の ftp サーバーで自分の写真を取得しました。

どうすればそれができますか?

以前は使用("/Boats/{BoatId}/{ImageId} + "." + {ImageExtension")していましたが、今は自分の写真を載せています\\ftplocation\files\boatcompany\boats\

私は次のことを試しました:(上記のURLで動作します)。

ImageUrl='<%# String.Format(@"\\ftp\files\boatcompany\boats\{0}\thumbnails\{1}.{2}", Eval("BoatId"), Eval("Image.ImageId"), Eval("Image.Extension")) %>' />
4

2 に答える 2

3

Max の回答に加えて、プライベートおよびパブリックの両方の ftp サーバー (および実際にはその他すべて) で機能する 3 つ目のソリューションを追加したいと考えました。

必要なことは、アプリケーションを ftp のプロキシとして使用することです。

  • ページを追加します。引数を受け入れる「getimage.aspx」、f.ex。画像のID
  • ページから、呼び出された場合、ヘッダー設定(MIME タイプなど)で応答(保留)
  • ftp サーバーに接続し、必要に応じてログインし、要求されたファイルをストリーミングします。
  • そのストリームのコンテンツをページのストリーム (応答ストリーム) に転送して閉じます。

次に、これを行うことができます(読みやすくするために改行します):

ImageUrl = '<%# 
    String.Format(@"/getimage.aspx?boatid={0}&imageid={1}&extension={2}", 
                  Eval("BoatId"), 
                  Eval("Image.ImageId"), 
                  Eval("Image.Extension")) %>'

FTP の場合は、.net の組み込み機能を使用するか、 FTPからのストリーミング ファイルを簡単に実行できるようにするRebex-FTPなどのサードパーティの拡張機能を使用できます。

このようにページを使用して画像を取得すると、ftp だけでなく、さまざまなソースから画像を取得できると同時に、ユーザーに対して画像を透過的に保つことができます。

于 2012-11-12T22:35:57.763 に答える
2

セキュリティ上の問題により、ブラウザーはローカル ストレージからリソース (画像を含む) をロードすることはありません。\\server\myfile.jpgそのため、またはのような URLfile:///server/myfile.jpgは、インターネット Web サイトから読み込まれることはありません。それがあなたのコードが機能しない理由です。

次の 2 つのオプションがあります。

1. ftplocation が実際の FTP サーバーであり、実際の FTP URL を使用して外界からアクセスできる場合は、次のコードを使用できます。

ImageUrl='<%# String.Format(@"ftp://ftp.server.com/files/boatcompany/boats/{0}/thumbnails/{1}.{2}", Eval("BoatId"), Eval("Image.ImageId"), Eval("Image.Extension")) %>

2. Web プロジェクト内の IIS に仮想サブフォルダーを作成し、それを呼び出してBoats、その仮想フォルダーを\\ftplocation\files\boatcompany\フォルダーにポイントすることができます。次に、コードでこれだけを使用します (FTP を取得する前に使用したコードとほとんど同じです)。

ImageUrl='<%# String.Format(@"/Boats/{0}/thumbnails/{1}.{2}", Eval("BoatId"), Eval("Image.ImageId"), Eval("Image.Extension")) %>
于 2012-11-12T22:23:54.103 に答える