0

久々のラーカー初ポスター。.Net / Linq を使って数年しか経っていないので、ここで何かが欠けていると確信しています。数え切れないほどの調査の末、助けが必要です。https からの提案に基づいてコードを作成しました: http://damieng.com/blog/2010/01/11/linq-to-sql-tips-and-tricks-3

次のコードは現在、SQL データベースに保存されている選択したファイル (pdf、doc、png など) を C:\temp に保存します。よく働く。もう一歩踏み出したい。c:\temp に自動的に保存する代わりに、ブラウザのプロンプトを表示して、目的の場所に保存できるようにすることはできますか。

  {     
   var getFile = new myDataClass();

   //retrieve attachment id from selected row
   int attachmentId = Convert.ToInt32((this.gvAttachments.SelectedRow.Cells[1].Text));

    //retrieve attachment information from dataclass (sql attachment table)
    var results = from file in getFile.AttachmentsContents
                       where file.Attachment_Id == attachmentId
                       select file;

    string writePath = @"c:\temp";

   var myFile = results.First(); 

   File.WriteAllBytes(Path.Combine(writePath, myFile.attach_Name), myFile.attach_Data.ToArray());
}

そのため、File.WriteAllBytes を使用する代わりに、linq クエリ (myFile) から返されたデータを取得して、代わりにユーザーにファイルを保存するように求める何かに渡すことができますか?)。この返されたオブジェクトを response.transmitfile で使用できますか? 本当にありがとう。

4

1 に答える 1

0

データはすでにメモリ内にあるため、メソッドを使用しBinaryWrite(myFile.attach_Data.ToArray())てデータを送信するだけです。

ただし、最初にヘッダーを適切に設定します。たとえば、次のようになります。

"Content-Disposition", "attachment; filename="+myFile.attach_Name
"Content-Type", "application/vnd.openxmlformats-officedocument.wordprocessingml.document"

コンテンツ タイプは、受信システムがファイルを処理する方法をガイドします。その他のMS Office コンテンツ タイプは次のとおりです。データが保存される時点でそれらがわかっている場合は、コンテンツ タイプも保存する必要があります。

また、応答で必要なデータはファイルの内容だけなので、Clearbefore とEndafterを呼び出しますBinaryWrite

于 2013-04-25T16:37:40.400 に答える