ユーザーがFileUploadControlを使用してサーバーにファイルをアップロードし、このコードでそのイベントを処理できるページを作成しました
Sub SaveAttachment()
Dim root As String = "C:\temp\"
Dim filename As String = FileUpload1.FileName
Dim SaveName As String = root & filename
FileUpload1.SaveAs(SaveName)
End Sub
それはうまくいきました、私はファイルがアップロードされるのを見ることができました、そしてファイルの内容は無傷です(ユーザーがアップロードしたファイルの正確に複製されたコピー)。
ここで、ファイルをユーザーにダウンロードして戻すために(後で)、Request.Parameter( "file")からファイル名を読み取り、そのファイルをフェッチしてユーザーにダウンロードする別のページを作成しました。ASP部分でのダウンロードを処理するためにDownload.aspxページを作成しました(コードビハインドは使用されていません)。
<%@ Import Namespace="System.IO"%>
<script language="VB" runat="server">
Sub Page_Load(sender As Object, e As EventArgs)
Dim root As String = "C:\temp\"
Dim filepath As String = Request.Params("file")
If Not filepath Is Nothing Then
filepath = root & filepath
If File.Exists(filepath) And filepath.StartsWith(root) Then
Dim filename As String = Path.GetFileName(filepath)
Response.Clear()
Response.ContentType = "application/octet-stream"
Response.AddHeader("Content-Disposition", _
"attachment; filename=""" & filename & """")
Response.Flush()
Response.WriteFile(filepath)
End If
End If
End Sub
</script>
<form id="form1" runat="server">
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
</form>
画像ファイルをアップロードしてから再度ダウンロードしてみましたが、問題なく動作しました。ただし、テキストファイルをアップロードした場合にのみ、そのファイルのコンテンツにHTMLコンテンツが追加されます。
これが私がアップロードしたサンプルファイルです
Here is my sample text file
It consists of 3 lines only
そして、これが私がそれをダウンロードして戻したときのファイルです
Here is my sample text file
It consists of 3 lines only
<form name="form1" method="post" action="FileDownload.aspx?file=sample_file.txt" id="form1">
<div>
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwULLTE5NTU5ODQyNTBkZNCYbOVZJDRUAOnIppQYkwHUSlb0" />
</div>
<span id="Label1">Label</span>
</form>
サーバー上のファイルに移動して開き、追加のHTMLコンテンツがそこにあることを確認しましたが、前述のように、ファイルは完全にアップロードされました。ダウンロードされた場合にのみ、追加されたHTMLのものが含まれます。
私が間違っているのは何ですか?この追加のHTMLコードをなくすにはどうすればよいですか?この問題がテキストファイルにのみ影響し、画像、EXE、XLS、DOCなどには影響しないのはなぜですか?