Repsonse.Transitfile (); Kann speichern, kann aber nicht öffnen

8

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.

    
Marcus 20.03.2012, 15:43
quelle

5 Antworten

5

Dies liegt daran, dass Ihr ContentType falsch ist. Verwenden Sie

%Vor%

Bearbeiten

Wenn es nicht funktioniert, können Sie es versuchen

%Vor%     
PraveenVenu 20.03.2012 15:53
quelle
2

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.

    
Vinicius Xavier 28.08.2012 20:29
quelle
1

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%
  

sourceFile.Position = 0;

%Vor%     
Saurabh 15.08.2012 06:38
quelle
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 .

    
PhilPursglove 20.03.2012 16:03
quelle
0

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%     
dylanT 05.01.2015 03:26
quelle