You are currently viewing JPEG Bildupload zu Google Drive testen

JPEG Bildupload zu Google Drive testen

Voraussetzungen

  • Google Account
  • idealerweise Testumgebung als Linux-System um curl-Befehl im Terminal korrekt verwenden zu können.

Einleitung

Es gibt zwei Ansätze zum Hochladen der Bilddateien, die das gleiche Resultat liefern.

  1. Base64 + URL-Parameter
    Vorteile:
    Einfach mit curl-Befehl zu nutzen
    Funktioniert zuverlässig mit kleineren Dateien (<1 MB).
    Keine zusätzliche Header-Konfiguration notwendig.

    Nachteile:
    Base64 bläht die Datei um ~30 % auf.
    Große Dateien können zu Zeitüberschreitungen oder HTTP-Fehlern führen.
  2. POST mit JSON oder multipart/form-data
    Vorteile:
    JSON ist strukturierter → besser erweiterbar (z. B. mit Metadaten).
    multipart/form-data erlaubt direkten Upload ohne Base64, ideal für große Dateien.
    Robust bei größeren Datenmengen.

    Nachteile:
    Erfordert mehr Konfiguration (Headers, Parsing).
    multipart/form-data in Google Script zu parsen ist umständlich.

Variante 1 – Base64 + URL-Parameter

Google Script

function doPost(e) {
  try {
    Logger.log("Start Upload");

    var folder = DriveApp.getFolderById("IHRE GOOGLE DRIVE FOLDER-ID");
    Logger.log("Folder gefunden");

    var data = e.parameter.contents;
    var name = e.parameter.filename || "upload_" + Date.now() + ".jpg";

    Logger.log("Filename: " + name);

    var blob = Utilities.newBlob(Utilities.base64Decode(data), MimeType.JPEG, name);
    var file = folder.createFile(blob);

    Logger.log("Datei erstellt: " + file.getName());

    return ContentService.createTextOutput("Upload OK: " + file.getName());
  } catch (err) {
    Logger.log("Fehler: " + err.message);
    return ContentService.createTextOutput("Fehler: " + err.message);
  }
}
function doGet(e) {
  return ContentService.createTextOutput("Web-App ist aktiv!!!.");
}

Anmerkungen:

Den Code kopieren und auf https://script.google.com/ anmelden. Danach ein neues Projekt anlegen und im Editorfenster den Code einfügen.
Anstelle von „IHRE GOOGLE DRIVE FOLDER-ID“ muss die ID des Google Drive Ordners in den gespeichert werden soll, zwischen den Anführungszeichen eingetragen werden.
Abschließend das Speichern und Bereitstellen nicht vergessen

Eingabe Konsole

curl -X POST -d "filename=testbild_2.jpg" --data-urlencode "contents=$(base64 -w 0 /media/cam_uploads/testbild.jpg)" "https://script.google.com/macros/s/AKfycbw.../exec"

Anmerkungen:
Bei dem Eintrag hinter „filename=“ handelt es sich um den Dateiname unter dem das Bild später in Google Drive gepeichert wird.
In unserem Beispiel ist die Pfadangabe und die Datei des hochzuladenden Bildes hier zu finden:
/media/cam_uploads/testbild.jpg. Der Speicherort und Datei müssen vorhanden sein-
Die Angabe „https://script.google.com/macros/s/…/exec“ ist die Webapp-URL des Google Scripts.

Variante 2 POST mit JSON oder multipart/form-data

Google Script

function doPost(e) {
  try {
    Logger.log("Start Upload");

    // JSON auslesen
    var json = JSON.parse(e.postData.contents);
    var data = json.contents;
    var name = json.filename || "upload_" + Date.now() + ".jpg";

    Logger.log("Filename: " + name);

    var folder = DriveApp.getFolderById("IHRE GOOGLE DRIVE FOLDER-ID");
    Logger.log("Folder gefunden");

    var blob = Utilities.newBlob(Utilities.base64Decode(data), MimeType.JPEG, name);
    var file = folder.createFile(blob);

    Logger.log("Datei erstellt: " + file.getName());

    return ContentService.createTextOutput("Upload OK: " + file.getName());
  } catch (err) {
    Logger.log("Fehler: " + err.message);
    return ContentService.createTextOutput("Fehler: " + err.message);
  }
}

function doGet(e) {
  return ContentService.createTextOutput("Web-App ist aktiv!!!.");
}


Eingabe Konsole

curl -X POST \                                                                                                                                                  
  -H "Content-Type: application/json" \
  -d "$(jq -n --arg filename "testbild_12.jpg" --arg contents "$(base64 -w 0 /media/cam_uploads/testbild.jpg)" '{filename: $filename, contents: $contents}')" \
  "https://script.google.com/macros/s/AKfycbw.../exec"

Anmerkungen:
Die individuellen Anpassungen sind, wie bereits oben beschrieben sind auch hier durchzuführen.

Schreibe einen Kommentar