Ankündigung

Einklappen
Keine Ankündigung bisher.

HTML-Problem - Download einbinden

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    #16
    Habt ihr euch den Code angeguckt? Er will Dateien zu PDF konvetieren und das ganze über ASP .NET realisieren wies aussieht. Wird wohl eine Vorgabe sein und mit reinem HTML kommt er da auch nicht weiter.

    Das ganze ist für uns aber schwer zu debuggen, einfach "geht nicht" kann man ja nix zu sagen. Der Downloadlink wird ja schonmal falsch sein, da musst du irgendwie (keine ahnung von ASP) dynamisch dann den Link zurückgeben von der eben generierten Datei. Aber wie gesagt, hau erstmal raus wo der Code scheitert. Wird die Datei hochgeladen? Konvertiert? Geh Schritt für Schritt vor und finde raus wo es hapert, dann kann dir bestimmt jemand helfen.

    Kommentar


      #17
      Zitat von DeepII
      Habt ihr euch den Code angeguckt? Er will Dateien zu PDF konvetieren und das ganze über ASP .NET realisieren wies aussieht. Wird wohl eine Vorgabe sein und mit reinem HTML kommt er da auch nicht weiter.

      Das ganze ist für uns aber schwer zu debuggen, einfach "geht nicht" kann man ja nix zu sagen. Der Downloadlink wird ja schonmal falsch sein, da musst du irgendwie (keine ahnung von ASP) dynamisch dann den Link zurückgeben von der eben generierten Datei. Aber wie gesagt, hau erstmal raus wo der Code scheitert. Wird die Datei hochgeladen? Konvertiert? Geh Schritt für Schritt vor und finde raus wo es hapert, dann kann dir bestimmt jemand helfen.
      Danke für die Antwort.
      Hochladen funktioniert soweit, Uploads werden in C:\Temp\Uploads gespeichert. Konvertieren klappt im Moment noch nicht, aber da bin ich jetzt schon dran. Dass der Link noch falsch ist, ist mir klar, wollte nur vorübergehend einen Download auf der Seite haben, aber da gibt's ja nun schon Probleme, da, egal auf welchem Weg ich den einfügen will, nichts passiert.

      Kommentar


        #18
        Das geht nicht, weil das kein Link ist. Das ist einfach nur ein Pfad, der vielleicht existiert, aber so rafft dein Browser das nicht.

        Richtig wäre file*://*PFAD (ohne *, RM konvertiert), aber das geht auch nicht wegen Sicherheitskram von Chrome und sonstigen Browsern. Also musst du das statisch über deinen Controller ausliefern wenn dus testen willst oder du überspringst das und gibst dann direkt dynamisch den Link zur Datei zurück, wie du es am Ende eh machen müsstest.

        Kommentar


          #19
          Zitat von DeepII
          Das geht nicht, weil das kein Link ist. Das ist einfach nur ein Pfad, der vielleicht existiert, aber so rafft dein Browser das nicht.

          Richtig wäre file*://*PFAD (ohne *, RM konvertiert), aber das geht auch nicht wegen Sicherheitskram von Chrome und sonstigen Browsern. Also musst du das statisch über deinen Controller ausliefern wenn dus testen willst oder du überspringst das und gibst dann direkt dynamisch den Link zur Datei zurück, wie du es am Ende eh machen müsstest.
          Gut, wenn das so eh nicht funktioniert, mach ich's gleich dynamisch. Vielen Dank auf jeden Fall, dass einer mal nicht Visual Studio geflamet hat! :D

          Kommentar


            #20
            Der Sicherheitskram von Chrome ist, dass er beispielweise keinen Zugriff auf lokale Dateien zulässt, afaik. Also lässt er dich keine Dateien von C:/ runterladen.

            Kommentar


              #21
              Offtopic: Was spricht gegen Visual Studio? FInde es für C# richtig geil, zumindest deutlich geiler als Eclipse für Java

              Kommentar


                #22
                HTML / reines Javascript kann nicht auf dein lokales Filesystem zugreifen. Das wäre ja ein riesiges Sicherheitsrisiko.

                Kommentar


                  #23
                  Zitat von DerKiLLa
                  Der Sicherheitskram von Chrome ist, dass er beispielweise keinen Zugriff auf lokale Dateien zulässt, afaik. Also lässt er dich keine Dateien von C:/ runterladen.
                  Das ist generell eine Sicherheitsvorkehrung von HTML/Javascript. Soweit ich weiß geht das nur mit Node.js (oder halt PHP)

                  Kommentar


                    #24
                    Zitat von cUre
                    HTML / reines Javascript kann nicht auf dein lokales Filesystem zugreifen. Das wäre ja ein riesiges Sicherheitsrisiko.
                    Doch, wenn du eine lokale HTML Seite aufrufst geht das. Zum Entwickeln also sogar machbar, durch die ASP .NET Umgebung aber nicht, die startet ja einen IIS, was zwar localhost ist, file Links werden aber trotzdem blockiert.
                    Zitat von QTPie
                    Offtopic: Was spricht gegen Visual Studio? FInde es für C# richtig geil, zumindest deutlich geiler als Eclipse für Java
                    Nichts, die Antworten vorher haben nicht bemerkt, dass hier ASP .NET verwendet wurde und gingen von statischem HTML aus. Nur um ein bisschen HTML zu coden ist Visual Studio ja auch totaler Overkill, aber als Entwicklungsumgebung für das Web Framework ist es toll. Wenn MS mit ASP .NET Core alles richtig macht sehe ich da ein tolles Framework auf die Webentwickler Community zukommen.

                    Kommentar


                      #25
                      Nur wenn es jemanden interessiert - hab wieder daran gearbeitet und es nun zum Laufen gebracht.

                      ConverterController.cs
                      Spoiler: 
                      using System.Diagnostics;
                      using System.Web.Mvc;
                      using System.IO;
                      using System;

                      namespace sb_admin_2.Web1.Controllers
                      {

                      public class ConverterController : Controller
                      {

                      private Process myProcess = new Process();

                      public ActionResult Index()
                      {
                      return View();
                      }

                      public ActionResult UploadErfolgreich()
                      {
                      var pfad = @"c:\temp\";

                      var dateiname = pfad + Request.Files[0].FileName;

                      if (System.IO.File.Exists(dateiname))
                      {

                      try
                      {
                      System.IO.File.Delete(dateiname);
                      }

                      catch (System.Exception e)
                      {
                      Console.WriteLine("An error occured: '{0}'", e);
                      }
                      }

                      Request.Files[0].SaveAs(dateiname);

                      myProcess.StartInfo.FileName = "soffice.exe";
                      myProcess.StartInfo.WorkingDirectory = @"C:\Users\de001007\Downloads\LibreOfficePortable\ App\libreoffice\program\";

                      myProcess.StartInfo.Arguments = @"--headless --convert-to pdf """ + dateiname + @""" --outdir C:\TEMP";

                      ViewBag.cmd = myProcess.StartInfo.FileName + " " + myProcess.StartInfo.Arguments;
                      myProcess.Start();
                      myProcess.WaitForExit();
                      ViewBag.exit = myProcess.ExitCode;

                      string dateinamePDF = Path.Combine(Path.GetDirectoryName(dateiname), Path.GetFileNameWithoutExtension(dateiname) + ".pdf");
                      string dateinamePNG = Path.Combine(Path.GetDirectoryName(dateiname), Path.GetFileNameWithoutExtension(dateiname) + ".png");

                      myProcess.StartInfo.FileName = "convert.exe";
                      myProcess.StartInfo.WorkingDirectory = @"C:\TEMP\ImageMagick-6.9.3-Q16";

                      myProcess.StartInfo.Arguments = @"-density 300 """ + dateinamePDF + @""" -resize 15% """ + dateinamePNG;

                      myProcess.Start();
                      myProcess.WaitForExit();

                      return RedirectToAction("Download", "Converter", new { dateinamePDF = dateinamePDF });

                      }

                      public ActionResult Download(string dateinamePDF)
                      {

                      ViewBag.dateinamePDF = dateinamePDF;


                      return View();
                      }

                      public ActionResult DownloadPDF(string dateinamePDF)
                      {
                      FileInfo fileInfo = new FileInfo(dateinamePDF);

                      if (fileInfo.Exists)
                      {
                      Response.Clear();
                      Response.AddHeader("Content-Disposition", "attachment; filename=" + fileInfo.Name);
                      Response.AddHeader("Content-Length", fileInfo.Length.ToString());
                      Response.ContentType = "application/octet-stream";
                      Response.Flush();
                      Response.TransmitFile(fileInfo.FullName);
                      Response.End();
                      }

                      return View();
                      }

                      }
                      }


                      Index.cshtml
                      Spoiler: 
                      @{
                      ViewBag.Title = "Index";
                      }

                      ... to PDF-Converter










                      UploadErfolgreich.cshtml
                      Spoiler: 
                      @{
                      ViewBag.Title = "UploadErfolgreich";
                      }

                      UploadErfolgreich

                      Commando:
                      @ViewBag.cmd

                      Exit Code : @ViewBag.exit


                      Download.cshtml
                      Spoiler: 
                      @{
                      ViewBag.Title = "Download";
                      }

                      Download



                      @ViewBag.dateinamePDF


                      Macht jetzt genau das, was es soll. Den Upload zum PDF-File konvertieren, das PDF-File in ein kleineres .png-Bild konvertieren und das PDF-File als Download anbieten.

                      Kommentar

                      Lädt...
                      X