Announcement

Collapse
No announcement yet.

Datei Download und nicht speichern sondern öffnen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Datei Download und nicht speichern sondern öffnen

    Hi,
    <br>
    <br>mit dem folgenden Code wird eine Excel-Datei an den Client gesandt. Funktioniert. Wählt man jedoch in dem IE6 Dialog "Dateidownload" den Punkt "Öffnen", so schließt sich dieser Dialog und erscheint direkt wieder. Erst wenn man hier nochmals "öffnen" auswählt wird das Dokument geöffnet.
    <br>Ist das ein Fehler im Code oder eher ein IE6 Problem?
    <br>
    <br>Besten Dank!
    <br>
    <br>mfg
    <br>PS
    <pre>
    Response.Clear();
    Response.ContentType = "application/x-msdownload;";
    Response.AppendHeader("Content-Disposition", string.Format("attachment; filename={0}; alternative: inline", "Testfile"));
    Response.WriteFile(tempfile);
    Response.Flush();
    File.Delete(tempfile);
    Response.End();
    </pre>

  • #2
    Hallo,

    ich verwende den folgenden Weg, um den Inhalt eines in der Datenbank binär gespeicherten Word-Dokuments direkt im Internet Explorer anzuzeigen (ohne dass der Dialog überhaupt erst angezeigt wird):

    <pre>

    <b>private</b> <b>void</b> Page_Load(<b>object</b> sender, System.EventArgs e)
    {
    SqlConnection aCon = <b>new</b> SqlConnection();
    <b>byte</b>[] aBuffer = <b>new</b> <b>byte</b>[0];
    System.IO.MemoryStream aMS = <b>new</b> System.IO.MemoryStream();
    SqlCommand aCmd = <b>new</b> SqlCommand();
    aCmd.Connection = aCon;
    aCmd.CommandText = <font color="#9933CC">&quot;SELECT blob FROM dbo.ASABLOB WHERE (asablob_id = @iasablob_id)&quot;</font>;
    aCmd.Parameters.Add(<font color="#9933CC">&quot;@iasablob_id&quot;</font>, SqlDbType.<b>Int</b>, 4).Value = 7;
    aCon.ConnectionString = c_ADONET;
    aCon.Open();
    <b>try</b>
    {
    aBuffer = (<b>byte</b>[]) aCmd.ExecuteScalar();
    aMS.Write(aBuffer, 0, aBuffer.Length);
    <b>this</b>.Response.ContentType = <font color="#9933CC">&quot;application/x-zip-compressed&quot;</font>;
    <b>this</b>.Response.AddHeader(<font color="#9933CC">&quot;Content-Disposition&quot;</font>,<font color="#9933CC">&quot;filename=Output.doc&quot;</font>);
    aMS.WriteTo(<b>this</b>.Response.OutputStream);
    }
    <b>finally</b>
    {
    aCon.Close();
    }
    }

    </pre&gt

    Comment


    • #3
      Hallo,

      der Thread ist zwar schon älter, ich habe aber in diesem Zusammenhang noch eine Frage:

      Wenn man, wie von Andreas Kosch beschrieben, ein Word-Dokument im Internet-Explorer angezeigt und auch editiert hat, wie kann man es dann wieder in die Datenbank speichern?

      Helmut

      Comment


      • #4
        Hallo,

        leider habe ich auf meine Frage keine Antwort erhalten. Ist das Problem zu einfach, bzw. sehe ich den Wald vor lauter Bäumen nicht, oder hat wirklich keiner eine Lösung dafür?

        Helmut

        Comment


        • #5
          Vergiss die Lösung eh. MS hat vor ein paar Jahren ein paar Registry-Schlüssel eingefügt das die Anzeige im Browser abschaltet, sprich es Startet Word direkt und läd dort das Dokument.

          Comment


          • #6
            Hallo,

            ok, ich hab die Lösung vergessen ;-) mein Chef aber leider das Problem nicht. Will sagen: Wie oben beschrieben wird das Dokument in Word im Browser angezeigt. Der Benutzer kann nun editieren. Ich soll dann das veränderte Dokument wieder zurück in die Datenbank schreiben. Leider habe ich aber keine Ahnung wie ich an das veränderte Dokument komme, um es in die Datenbank zu schreiben.

            Helmut

            Comment


            • #7
              Hallo,

              das eigentliche Problem liegt doch darin, dass die ASP.NET-Anwendung auf dem Server ausgeführt wird, so dass der Browser (abgesehen von JavaScript/AJAX) außerhalb der "Reichweite" der ASP.NET-Anwendung ist.

              Wenn der in Word/Excel geänderte Text zurück in die Webanwendung muss, scheint mir der einfachste Weg darin zu bestehen, auf ein ActiveX bzw. ein WinForm-Control zurückzugreifen, das im Browser eingebunden wird. Auf www.codeproject.com ist ein gleichnamiges ExcelControl (System.Windows.Forms.UserControl-Nachfolger) zu finden, das im WinForm abgelegt werden kann und den direkten Zugriff auf das Excel-Objektmodell erlaubt.

              P.S: Derartige Probleme waren unter anderen ein Grund, warum Smart Clients (also WinForm-Clients für Three-Tier-Anwendungen, die über ClickOnce verteilt werden) in den letzten Jahren so in Mode gekommen sind. Denn diese sind genauso einfach zu verteilen wie Webform-Clients, ohne allerdings die Möglichkeiten beim Zugriff auf andere Ressourcen einzuschränken.

              Comment

              Working...
              X