Hauptmenü

Werkzeuge

Kategorien

Archiv

Mehrere Dateien mit Javascript/FileReader einlesen und mit XHR an den Server senden

Erstellt in Allgemein am 12. Januar 2025 vom Daschmi

Möchte man mit Vue/Javascript Dateien eines Uplaod Feldes einlesen und an den Server senden, so kann man folgenden Code nutzen.

const fileToBase64 = (file) => {

  return new Promise((resolve, reject) => {

    const reader = new FileReader();

    reader.onload = () => resolve(reader.result.split(",")[1]); // Nur Base64-Daten
    reader.onerror = () => reject(new Error(`Fehler beim Lesen von ${file.name}`));

    reader.readAsDataURL(file);

  });

}

const handle_upload = async () => {

  const arFiles = Array.from(ref_file.value.files);

  const base64Files = await Promise.all(

    arFiles.map(async (file) => {

      const base64 = await fileToBase64(file);

      return { name: file.name, type: file.type, base64: base64, };

    })

  );

  console.log(base64Files);

  // ... base64Files an den Server senden mit fetch/xhr  

}

Zeichen in einer Spalte mit MySQL zählen

Erstellt in Allgemein am 20. August 2024 vom Daschmi

Ich wollte in einer Spalte einen Wert ändern. In meinem Fall hatte ich einen Code der mit | getrennt war um ein Feld erweitert. Um Alte Einträge anzupassen habe ich folgenden Trick verwendet

UPDATE node_value
SET value = CONCAT(value, '|')
WHERE (LENGTH(value) - LENGTH(REPLACE(value, '|', ''))) = 10 AND key = 'calc_key'

Inkonsistentes Verhalten von gettype in PHP

Erstellt in Allgemein am 19. Februar 2024 vom Daschmi

Mir ist aufgefallen, das die PHP Funktion „gettype“ bei Integer Werten „integer“ und nicht die interne PHP Bezeichnung „int“ zurückgibt.

Aufgrund der Abwärtskompatibilität wird das Verhalten wohl auch nicht geändert. https://bugs.php.net/bug.php?id=74742.

Aufgefallen ist mir das bei der Reflection einer Klasse die ich dynamisch für einen SOAP Server und REST Anfragen nutze. Dort erhalte ich bei „ReflectionParameter::getType“ als Typ „int“, wenn ich den aber mit dem gettype der JSON Anfrage vergleiche erhalte ich „integer“.

Gelöst habe ich das durch eine kleine match Function.

abstract class Helper {
  /**
   * Correct integer to int in the gettype php function
   * https://bugs.php.net/bug.php?id=74742
   * @param string $type
   * @return string
   */
  public static function mapGetTypeType(string $type): string {
    
    return match($type) {
      'integer' => 'int',
      default => $type
    };
    
  }
}

CSV Download mit Javascript erstellen

Erstellt in Javascript am 14. November 2023 vom Daschmi

Mit folgender JavaScript Funktion kann ein CSV Download aus einem Array initiiert werden.

function downloadCSV(data, filename) {

	const csvContent = "data:text/csv;charset=utf-8," + data.map(row => row.join(",")).join("\n");
	const encodedUri = encodeURI(csvContent);
	const link = document.createElement("a");

	link.setAttribute("href", encodedUri);
	link.setAttribute("download", filename);

	document.body.appendChild(link);

	link.click();

	document.body.removeChild(link);

}

Das ganze wird dann wie folgt aufgerufen:

downloadCSV(csvData, fileName);