3

File Download über Button

Lädt euch das erstellte shareFile() direkt in den Downloadordner

let downloadfile := "
<!DOCTYPE html>
<html>
<head>
<style>
  .scroll {
                height: 500px;
                width:500px;
                background-color: white;
}
</style>
</head>
<body>
<p id='dest'>
</p>
<button onclick='download()'>
                  Download file
</button>
<p class='scroll'>
                <iframe
                width=50%
                height=50%
                src='" +
    shareFile() (bitte vorher in ein Textfeld schreiben und Textfeld hier einsetzen) +
    "'
                frameborder=7
                ></iframe>
</p>
</body>
<script src='https://cdnjs.cloudflare.com/ajax/libs/axios/0.19.2/axios.min.js'></script>
<script>
function download() {
        axios({
            url: '" +
     shareFile() (bitte vorher in ein Textfeld schreiben und Textfeld hier einsetzen) +
    "',
            method: 'GET',
            responseType: 'blob'
        })
            .then((response) => {
                const url = window.URL
               .createObjectURL(new Blob([response.data]));
                const link = document.createElement('a');
                link.href = url;
                link.setAttribute('download', '" +
    last(split(text(Bildfeldname), "/")) +
    "');
                document.body.appendChild(link);
                link.click();
            })
    }
</script>
</html>";
html(downloadfile)

5 Antworten

null
    • T_Bartzsch
    • vor 10 Monaten
    • Gemeldet - anzeigen

    Super Michi, vielen Dank..... ich war letztes Jahr auf der Suche nach so einer Sache, bin aber selber nicht so fit in Javascript. Es klappt übrigens auch auf dem MAC unter Chrome und Firefox.

    Wenn wir jetzt noch über Javascript ein Dokument direkt auf den Drucker schicken können.... dann macht meine DHL API  Anbindung für Versandetiketten endlich Sinn...

      • Michi.1
      • vor 10 Monaten
      • Gemeldet - anzeigen

      ich suche auch nur...

      Hier ist in der Toolbar ein  Button drinnen, welcher die Daten direkt zum Druckaufruf sendet. (dauert teilweise beim Aufrufen).

      Zu finden unter : https://www.amcharts.com/docs/v4/?s=export

      Vielleicht kann das ja jemand umbauen, für andere Zwecke und wieder zur Verfügung stellen.

       

      let aa := "
      <html>
      <script src='//www.amcharts.com/lib/4/core.js'></script>
      <script src='//www.amcharts.com/lib/4/charts.js'></script>
      <script src='//www.amcharts.com/lib/4/themes/animated.js'></script>
      <div id='tools'>
        <strong>Toolbar</strong>
      </div>
      <div id='chartdiv'></div>
      <style>
      body {
        font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol';
      }
      #chartdiv {
        width: 100%;
        height: 250px;
      }
      #tools {
        border: 1px solid #888;
        border-radius: 4px;
        padding: 0.5em 1em;
        position: relative;
        min-height: 27px;
      }
      .amcharts-amexport-item.amcharts-amexport-item-level-0 {
        opacity: 1;
      }
      </style>
      </html>
      <script>
       /**
       * ---------------------------------------
       * This demo was created using amCharts 4.
       *
       * For more information visit:
       * https://www.amcharts.com/
       *
       * Documentation is available at:
       * https://www.amcharts.com/docs/v4/
       * ---------------------------------------
       */
      am4core.useTheme(am4themes_animated);
      // Create chart instance
      var chart = am4core.create('chartdiv', am4charts.XYChart);
      // Add data
      chart.data = [{
        'date': new Date(2018, 0, 1),
        'value': 450,
        'value2': 362,
        'value3': 699
      }, {
        'date': new Date(2018, 0, 2),
        'value': 269,
        'value2': 450,
        'value3': 841
      }, {
        'date': new Date(2018, 0, 3),
        'value': 700,
        'value2': 358,
        'value3': 699
      }, {
        'date': new Date(2018, 0, 4),
        'value': 490,
        'value2': 367,
        'value3': 500
      }, {
        'date': new Date(2018, 0, 5),
        'value': 500,
        'value2': 485,
        'value3': 369
      }, {
        'date': new Date(2018, 0, 6),
        'value': 550,
        'value2': 354,
        'value3': 250
      }, {
        'date': new Date(2018, 0, 7),
        'value': 420,
        'value2': 350,
        'value3': 600
      }];
      // Create axes
      var dateAxis = chart.xAxes.push(new am4charts.DateAxis());
      dateAxis.renderer.grid.template.location = 0;
      dateAxis.renderer.minGridDistance = 30;
      var valueAxis = chart.yAxes.push(new am4charts.ValueAxis());
      // Create series
      function createSeries(field, name) {
        var series = chart.series.push(new am4charts.LineSeries());
        series.dataFields.valueY = field;
        series.dataFields.dateX = 'date';
        series.name = name;
        series.tooltipText = '{dateX}: [b]{valueY}[/]';
        series.strokeWidth = 2;
      
        var bullet = series.bullets.push(new am4charts.CircleBullet());
        bullet.circle.stroke = am4core.color('#fff');
        bullet.circle.strokeWidth = 2;
      }
      createSeries('value', 'Series #1');
      createSeries('value2', 'Series #2');
      createSeries('value3', 'Series #3');
      chart.legend = new am4charts.Legend();
      chart.cursor = new am4charts.XYCursor();
      chart.exporting.menu = new am4core.ExportMenu();
      chart.exporting.menu.container = document.getElementById('tools');
      </script>
      ";
      html(aa)
      
    • pma_mgmt
    • vor 4 Monaten
    • Gemeldet - anzeigen

    Hallo Michi, 

    ich glaube ich stelle mich noch zu doof an. 

    Folgendes führe ich in der mac-app aus. Leider passiert nichts.

     

    Vielen Dank für deine Unterstützung.

    Peter

    let sb := (select Steckbriefe where 'meinecsv' != null);
    for i in sb do
        let downloadfile := "
    <!DOCTYPE html>
    <html>
    <head>
    <style>
      .scroll {
                    height: 500px;
                    width:500px;
                    background-color: white;
    }
    </style>
    </head>
    <body>
    <p id='dest'>
    </p>
    <button onclick='download()'>
                      Download file
    </button>
    <p class='scroll'>
                    <iframe
                    width=50%
                    height=50%
                    src='" +
            shareFile(i.'meinecsv') +
            "'
                    frameborder=7
                    ></iframe>
    </p>
    </body>
    <script src='https://cdnjs.cloudflare.com/ajax/libs/axios/0.19.2/axios.min.js'></script>
    <script>
    function download() {
            axios({
                url: '" +
            shareFile(i.'meinecsv') +
            "',
                method: 'GET',
                responseType: 'blob'
            })
                .then((response) => {
                    const url = window.URL
                   .createObjectURL(new Blob([response.data]));
                    const link = document.createElement('a');
                    link.href = url;
                    link.setAttribute('download', '" +
            last(split(text(i.'meinecsv'), "/")) +
            "');
                    document.body.appendChild(link);
                    link.click();
                })
        }
    </script>
    </html>
    
      • Michi.1
      • vor 4 Monaten
      • Gemeldet - anzeigen

      Da können dir nur die Profis helfen. Ich arbeite nur im Web. Geht es denn, wenn du die Schleife weglässt und nur auf ein File zugreifst?

      • Ninox-Professional
      • planoxpro
      • vor 4 Monaten
      • Gemeldet - anzeigen

       Mit shareFile() wird ja eine URL generiert. Das kann eigentlich nur in der Cloud funktionieren, nicht in den lokalen Apps.