Beim herunterladen einer Datei aus ASP .Net, die text-Datei wird angehängt mit HTML-Inhalt
Ich habe eine Seite, die ermöglicht Benutzern das hochladen von Dateien auf den server mit einem FileUpload-Kontrolle und Abwicklung Ihrer Veranstaltung mit diesem code
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
Dass geklappt hat, ich war in der Lage, um zu sehen Dateien immer hochgeladen, und den Inhalt der Dateien intakt ist (genau eine Kopie der Datei, die der Benutzer hochladen).
Nun für das herunterladen der Dateien an den Benutzer (später), die ich geschrieben habe eine andere Seite, liest den Dateinamen aus einer Anfrage.Parameter ("Datei") und holt sich die Datei heruntergeladen werden, um den Benutzer. Ich habe geschrieben, der Download.aspx-Seite zu behandeln herunterladen in der ASP-Teil (kein code behind verwendet wurde):
<%@ 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>
Habe ich versucht das hochladen von Bildern und Dateien und dann den Download erneut, und es funktionierte gut. Allerdings nur, wenn ich hochladen, text Dateien, dass ich den Inhalt der Datei angehängt mit einigen HTML-Inhalt.
Hier ist eine Beispiel-Datei, die ich hochgeladen habe
Here is my sample text file
It consists of 3 lines only
Und hier ist die Datei, wenn ich es heruntergeladen zurück
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>
Ging ich auf die Datei auf dem server und öffnete es, um sicherzustellen, dass die zusätzliche HTML-Inhalte war es, aber wie gesagt, die Datei, die hochgeladen wurde perfekt. Nur, wenn es heruntergeladen wird, enthält es angehängt HTML-Zeug.
Was ich falsch mache? Was kann ich tun, um diese zusätzlichen HTML-code gehen?
Warum tritt das problem nur auf Text-Datei, nicht die Bilder, EXE, XLS, DOC , etc?
Ich denke, es ist eine Antwort.End(); fehlt... Und auch Weg.Kombinieren Sie bauen den kompletten Pfad an. Falls Sie keine Antwort.End(); der rest der Seite ist mark-up code wird umgewandelt in den HTML-code, den Sie sehen in Ihrem browser.
das ist richtig, wie im folgenden beantwortet.
Das ist die Sache mit stackoverflow - während der Eingabe entfernt, jeden jetzt und dann jemand anderes schneller ist 🙂
InformationsquelleAutor Ahmad | 2012-07-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Stellen Sie sicher, beenden Sie Ihre Antwort durch Aufruf
Response.End()
nachResponse.WriteFile(filepath)
sonst Ihr Formular wird an den Strom und an den client gesendet.Wird es auch Auswirkungen auf andere Dateien als gut, obwohl die meisten wahrscheinlich nur als Müll am Ende der Datei und ignoriert von Ihren jeweiligen Anwendungen.
InformationsquelleAutor Karl-Johan Sjögren
Ist, ist nicht sicher zu verwenden
Response.End()
Es wird immer wieder einSystem.Threading.ThreadAbortException
:.. wenn debugged und gesehen, dass im catch-block...Alternative..
Verwenden Sie den folgenden statt...
InformationsquelleAutor Shoaib Qureshi
Antwort.redirect hat eine Ausnahme ausgelöst. Shoaib Antwort hat mich näher, aber es unterdrückt alles, einschließlich der gültigen Datei-Inhalts. Was für mich gearbeitet wurde die Neuordnung der Aussagen wie folgt:
InformationsquelleAutor Lon Prosser