私の目標は、いくつかのフォーム入力を受け取り、特定のボタンをクリックするとすべての要約をダウンロードするようにユーザーに促すことです。私はファイルがダウンロードされるとファイルを必要としないので、データが直接ユーザーにストリーミングされるソリューションを提供したいと考えています。私の現在の解決策では、ユーザーにダウンロードを促すことさえできません。誰かが間違っていることを指摘できますか?動的に生成されたファイルをダウンロードできるようにする
私はwebmethodとしてラップされているので、特定のものにアクセスできるように_Defaultページクラスの定義を追加する必要がありました。
Public Shared Sub SaveText(ByVal Text As String)
Dim d As New _Default
Dim FileName As String = System.IO.Path.GetRandomFileName()
Using sw As New System.IO.StreamWriter(d.Server.MapPath(FileName + ".txt"))
sw.WriteLine(Text)
sw.Close()
End Using
Dim fs As System.IO.FileStream = Nothing
fs = System.IO.File.Open(d.Server.MapPath(FileName + ".txt"), System.IO.FileMode.Open)
Dim btFile(fs.Length) As Byte
fs.Read(btFile, 0, fs.Length)
fs.Close()
With HttpContext.Current.Response
.AddHeader("Content-disposition", "attachment;filename=output.txt")
.AddHeader("Content-Length", btFile.Length.ToString)
.ContentType = "application/octet-stream"
.BinaryWrite(btFile)
.End()
End With
End Sub
申し訳ありません申し訳ありませんが、これは以前には言及されていませんが、WebメソッドがAJAXリクエストによって呼び出されています。
に合うジェネリックハンドラ(* .ashx)ファイルのような音?私はすべてを歩いてきました。それはうまく動いているようです。 – Radu
@Radu - あなたが省略したかなりの詳細です。 AJAXの応答はおそらくこれらのヘッダーが無視される原因になるでしょう。 – Oded
@Radu - リンクされたスレッドのアプローチは有望です(新しいダウンロードを生成するためにIFrameを作成する)。 http://www.sencha.com/forum/showthread.php?8931-save-as-dialog-with-ajax&p=44739#post44739およびhttp://www.west-wind.com/weblog/posts/76293。 aspx#106904 – Oded