Ich versuche, eine xlsx-Datei mit
zu senden %Vor% Der IE-Dialog erscheint und ich kann die Datei erfolgreich speichern, dann öffne sie aus dem Ordner, das funktioniert gut und dandy. Aber wenn ich im IE-Dialog auf "Öffnen" klicke, bekomme ich "myFile.xlsx konnte nicht heruntergeladen werden." Ich klicke auf "Retry" und es öffnet Excel, öffnet aber die "Excel kann die Datei 'myFile.xlsx' nicht öffnen, weil das Dateiformat oder die Dateierweiterung nicht gültig ist ..." Fehler.
Ich führe gerade die Site von VS2010 im Debug-Modus.
Weiß jemand, warum es mich speichern würde, aber nicht direkt öffnen?
Bearbeiten
Chrome lädt es einfach herunter. FF hat versucht, es zu öffnen, gibt aber den Fehler The file you are trying to open, 'myFile.xlsx.xls', is in a different format than specified by the file extension...
Ich kann wählen, es trotzdem zu öffnen, und es wird erfolgreich geöffnet, aber im schreibgeschützten Modus.
Also, hier passiert etwas Unkonventionelles
fileName="myFile.xlsx"
Bearbeiten 2
Dies ist in IE 9. Ich habe auch octet-stream
und application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
als ContentType versucht.
Dies liegt daran, dass Ihr ContentType falsch ist. Verwenden Sie
%Vor%Bearbeiten
Wenn es nicht funktioniert, können Sie es versuchen
%Vor%Ich hatte das gleiche Problem einmal und löste es, indem ich Caching-Anweisungen überprüfte, die vom Anwendungsserver, in diesem Fall IIS, gesendet wurden. Manchmal fügen Sie Header auf Anwendungsebene hinzu, die verhindern, dass die Datei unter bestimmten Bedingungen wie HTTPS-Verbindungen gespeichert wird. Stellen Sie sicher, dass Sie keine widersprüchlichen Anweisungen eingeben.
Ich stieß auf ein ähnliches Problem.
Als ich gelesen habe, dass ich vom Ende des Streams gelesen habe, wurde das Byte-Array nicht mit irgendetwas gefüllt.
Einstellen der Stream-Position auf 0 (sourceFile.Position = 0;) kurz vor dem Lesen des Streams (sourceFile.Read (getContent, 0, (int) sourceFile.Length);) hat es für mich behoben.
Sehen Sie, ob das hilft.
Wie bei "Response.ContentType" funktionierte "application / vnd.ms-excel" für mich.
%Vor%%Vor%sourceFile.Position = 0;
Durch Zufall bin ich mitten in etwas ähnlichem ...
Der für xlsx zu verwendende MIME-Typ ist application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
, siehe diese Frage .
Ich war von diesem Problem, insbesondere bei längeren Dateien, sehr überrascht.
In unserem Fall ist es mit dem Content-Length-Header gelungen, das Problem zu beheben. Sobald der Inhalt eine bestimmte Länge erreicht hat, erhalten Sie dieses Problem.
Beispiel (wobei tempsbldr ein StringBuilder ist):
%Vor%Tags und Links c# asp.net response.transmitfile