1

私がやろうとしていること - ユーザーがリンクをクリックすると、RavenDB から添付ファイルを取得し、ユーザーに対して自動的に開きます。

リンクのクリック時 - ビュー/ajax を介して、添付ファイル (RavenDB に既に保存されている) の添付ファイル ID をコントローラー メソッドに渡します。コントローラー メソッド内に入ったら、添付ファイルを取得し、ユーザーに添付ファイルを表示/開きたいと思います。

意見 :

<a href onclick="GetAttachment('<%= Model.Id %>');"> See attachment </a>

Ajax/JS

function GetAttachment(id) {   

$.ajax({
    type: 'POST',
    url: '/ControllerName/GetMethod',
    data: id,
    contentType: 'application/json; charset=utf-8',
    success: function (msg) {
        if (msg.Success) {               
        }
        else {               
        }
     }       
  });
}

コントローラー:

    public string GetMethod(string id)
    {          
        var dbCommands = session.Advanced.DatabaseCommands;
        var attachment = dbCommands.GetAttachment(id);
       //Here - How do I use above lines of code to get hold of the 
       // attachment and open it for the user.
    }

お手伝いありがとう。

4

2 に答える 2

3

RavenDBAttachmentクラスには、添付ファイルのバイト ストリームへのサンクであるDatatype のプロパティがあります。ストリームは、MVC コントローラーで返す必要があるものです。Func<Stream>

public FileResult GetMethod(string id)
{          
    var dbCommands = session.Advanced.DatabaseCommands;
    var attachment = dbCommands.GetAttachment(id);
    return File(attachment.Data(), "fileName");
}
于 2012-08-02T05:08:19.503 に答える
1

このようなもの: コントローラ:

public FileResult GetMethod(string id)
{          
    var name = "filename.extension";
    var dbCommands = session.Advanced.DatabaseCommands;
    var attachment = dbCommands.GetAttachment(id);
    var stream = new MemoryStream(attachment.Data);
    return new FileStreamResult(stream, name);
}

意見:

@Html.ActionLink("添付ファイルを参照", "GetMethod", "ControllerName", new {id = ModelId}, null)

データベースからファイルのMemoryStreamを取得するか、ファイルをMemoryStreamに転送する必要があります

于 2012-08-01T14:52:16.010 に答える