私はasp.net mvcで1つのアプリケーションを開発し、データベースの代わりにファイルシステムにファイルを格納することに決めました(dbテーブルのファイルへの絶対パスのみを入れました)。開発フェーズIのすべてのファイルは、アプリケーションフォルダ内の特別な専用フォルダに置かれます。サーバーに展開した後、IISのアクセス許可に問題があり、ファイルを保存できませんでした。その後、上記のフォルダーをC:\ Uploadフォルダーに移動し、写真を取得してthickboxダイアログウィジェット(フォトギャラリー)で表示しようとするまでは問題ありませんでした。いくつかのグーグルの後、私はasp.net mvcが相対パスからのみ写真を表示できると結論づけます。 BLOBに1つのソリューションしか格納しないのですか?絶対パスからの写真を表示できません
更新:
モデルコード
public class PriloziViewModel
{
public string FileName { get; set; }
public string FilePath { get; set; }
}
コントローラーコード:
public ActionResult VijestiSlike(Int64 vijestID)
{
var slike = from i in db.Slikes where i.FK_vijesti_id == vijestID select i;
PriloziViewModel s = new PriloziViewModel();
List<PriloziViewModel> slist = new List<PriloziViewModel>();
foreach (var j in slike) {
slist.Add(new PriloziViewModel()
{
FileName = j.naziv,
FilePath = j.link
});
}
return View(slist);
}
ビューコード:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<IEnumerable<MyApp.Models.PriloziViewModel>>" %>
<% foreach (var item in Model) { %>
<a href="<%: Html.DisplayFor(modelItem => item.FilePath) %>" title="" class="thickbox" rel="gallery-plants">
<img src="<%: Html.DisplayFor(modelItem => item.FilePath) %>" style="width:120px;height:80px;" alt="" /></a>
<% } %>
リンクは、フォーマットCでデータベースに格納されている:\アップロード\ Photo12345.jpg
仮想ディレクトリ(C:\アップロード)もIISに追加されます。
あなたはどういうことを言っていますか? - * "いくつかのグーグルの後、私はasp.net mvcが相対パスからのみ写真を表示することができると結論している" *、あなたはもう一度googleする必要があります。 – Lankymart
あなたのコメントは私には全く役に立たなかった – Ognjen
なぜ絶対パスをデータベースに保存するのですか?その絶対パスは、ブラウザに関しては何も意味しません。それは絶対パスからの画像を表示することはできませんasp.net mvcではないです。ブラウザはあなたのサーバの 'C:\ Upload'フォルダを見ることができません。ウェブサイトの場合、絶対パスはドメイン名で始まります。ウィンドウでは、絶対パスはドライブ文字で始まります。イメージを 'C:\ Upload'に保存したい場合は、IISに仮想ディレクトリを作成し、そのディレクトリを基準にしたパスを保存します。あなたのウェブサイト内に画像フォルダを作成し、そのフォルダに適切な権限を与えて、ファイルをアップロードすることができます。 – Amila