<span aria-hidden="true" id="uppy-file-uploader-"></span> <span aria-hidden="true" id="uppy-dateiuploader-"></span>

# Uppy-Dateiuploader

[transloadit/uppy⁠](https://github.com/transloadit/uppy)

[Uppy⁠](https://uppy.io) ist ein Open-Source-Dateiuploader von Transloadit für Webbrowser. Mit über 30.000 Stargazern auf GitHub ist er weltweit der #1-Dateiuploader. Dank integrierter [tus⁠](https://tus.io)-Unterstützung überstehen Uploads Netzwerkunterbrechungen, Browserabstürze und ein versehentliches Verlassen der Seite. Uppy ist die empfohlene Lösung, um Transloadit in Webbrowser zu integrieren.

Das [Transloadit-Plug-in⁠](https://uppy.io/docs/transloadit/) für Uppy unterstützt Sie bei der Kommunikation mit der Transloadit API. Es lässt sich mit allen anderen Uppy-Plug-ins verwenden, beispielsweise mit der modalen Dateiauswahl, die Importe aus Drittanbieterdiensten wie Instagram unterstützt, mit HTML-Formularen und mehr.

Transloadit hostet tusd für fortsetzbare Uploads und unsere Encoding-API. Wenn Sie Remote-Quellen hinzufügen, hosten wir auch Companion für Sie.

<span aria-hidden="true" id="uploading-with-uppy--transloadit"></span> <span aria-hidden="true" id="upload-mit-uppy--transloadit"></span>

## Upload mit Uppy + Transloadit

Betrachten Sie Uppy als Upload-Benutzeroberfläche im Browser und Transloadit als Verarbeitungspipeline:

1. **Uppy** erfasst Dateien (aus lokalen Quellen, von der Kamera oder aus Remote-Quellen) und lädt sie mit der Fortsetzungsfunktion von tus hoch.
2. **Transloadit** führt Ihre Assembly aus (codieren, optimieren, analysieren, speichern usw.).
3. **Die Auslieferung** erfolgt aus Ihrem Speicherort, optional über Ihr CDN oder das Transloadit CDN (TLCDN).

Wenn Sie nur Uploads und Storage benötigen, können Sie Ihre Assembly minimal halten (nur `/upload/handle`und einen Export-Step). Wenn Sie Transformationen benötigen, fügen Sie die entsprechenden Robots hinzu und behalten dieselbe Upload-Benutzeroberfläche bei – Uppy bleibt unverändert.

So können Sie eine einheitliche, konsistente Upload-Benutzeroberfläche anbieten und gleichzeitig die Verarbeitungs-Steps austauschen oder erweitern, während sich Ihr Produkt weiterentwickelt.

<span aria-hidden="true" id="framework-guides"></span>

## Framework-Leitfäden

Beginnen Sie mit dem [offiziellen Uppy-Leitfaden⁠](https://uppy.io/docs/guides/uppy-transloadit/)für die Template- und serverseitige Signaturkonfiguration. Wechseln Sie danach zum Client-Abschnitt für Ihr Framework:

* [JavaScript⁠](https://uppy.io/docs/guides/uppy-transloadit/#javascript)
* [React⁠](https://uppy.io/docs/guides/uppy-transloadit/#react)
* [Next.js⁠](https://uppy.io/docs/guides/uppy-transloadit/#nextjs)
* [Vue⁠](https://uppy.io/docs/guides/uppy-transloadit/#vue)
* [Angular⁠](https://uppy.io/docs/guides/uppy-transloadit/#angular)

Der Leitfaden belässt das Transloadit Auth Secret auf Ihrem Server, signiert kurzlebige Assembly-Optionen und gibt dem Browser nur die für `@uppy/transloadit` erforderlichen Werte. Ihr Server sollte das zulässige Template auswählen und den aktuellen Nutzer vor dem Signieren autorisieren. Er sollte keine beliebigen, vom Browser übermittelten Instructions signieren.

<span aria-hidden="true" id="example"></span> <span aria-hidden="true" id="beispiel"></span>

### Beispiel

Zu Demonstrationszwecken zeigen wir einen erfolgreichen Ablauf mit der Gesichtserkennung von Transloadit, einer Dateiauswahl und unserem CDN-Bundle. Diese Demo platziert bewusst einen Auth Key und unsignierte Instructions im Browser. Verwenden Sie sie nur mit Testzugangsdaten. Nutzen Sie für die Produktion den serverseitig signierten Template-Ablauf aus dem obigen Framework-Leitfaden.

```html
<!-- TEST/DEMO ONLY: uses test credentials and unsigned Instructions in the browser. -->
<!-- For production, use https://uppy.io/docs/guides/uppy-transloadit/ -->
<!-- This pulls Uppy from our CDN -->
<!-- For smaller self-hosted bundles, install Uppy and plugins manually: -->
<!-- npm i @uppy/core @uppy/dashboard @uppy/image-editor @uppy/remote-sources @uppy/transloadit -->
<link href="https://releases.transloadit.com/uppy/v5.2.4/uppy.min.css" rel="stylesheet" />
<button id="browse">Select Files</button>
<script type="module">
  import {
    Uppy,
    Dashboard,
    ImageEditor,
    RemoteSources,
    Transloadit,
  } from 'https://releases.transloadit.com/uppy/v5.2.4/uppy.min.mjs'
  const uppy = new Uppy()
    .use(Transloadit, {
      waitForEncoding: true,
      alwaysRunAssembly: true,
      assemblyOptions: {
        params: {
          // To avoid tampering, use Signature Authentication:
          // https://transloadit.com/docs/api/authentication/
          auth: {
            key: 'YOUR_TRANSLOADIT_KEY',
          },
          // It's often better to store encoding instructions in your account
          // and use a template_id instead of adding these steps inline
          steps: {
            ':original': {
              robot: '/upload/handle',
            },
            faces_detected: {
              use: ':original',
              robot: '/image/facedetect',
              crop: true,
              faces: 'max-confidence',
              format: 'preserve',
              crop_padding: '10%',
            },
            exported: {
              use: ['faces_detected', ':original'],
              robot: '/s3/store',
              credentials: 'demo_s3_credentials',
              url_prefix: 'https://demos.transloadit.com/',
            },
          },
        },
      },
    })
    .use(Dashboard, { trigger: '#browse' })
    .use(ImageEditor, { target: Dashboard })
    // Optional: only needed for remote sources. Local-device uploads do not need Companion.
    .use(RemoteSources, {
      companionUrl: 'https://api2.transloadit.com/companion',
    })
    .on('complete', ({ transloadit }) => {
      // Due to waitForEncoding:true this is fired after encoding is done.
      // Alternatively, set waitForEncoding to false and provide a notify_url
      console.log(transloadit) // Array of Assembly Statuses
      transloadit.forEach((assembly) => {
        console.log(assembly.results) // Object of encoding results keyed by Step name
      })
    })
    .on('error', (error) => {
      console.error(error)
    })
</script>

```

Weitere Beispiele finden Sie unter[examples/⁠](https://github.com/transloadit/uppy/tree/main/examples). Alternativ können Sie sie[live testen⁠](https://uppy.io/examples/dashboard/). Uppy und Transloadit sind äußerst vielseitig. Falls Sie andere Anforderungen haben, unterstützen wir diese wahrscheinlich bereits.

<span aria-hidden="true" id="documentation"></span> <span aria-hidden="true" id="dokumentation"></span>

### Dokumentation

Lesen Sie [die vollständige Dokumentation zum Transloadit-Plug-in von Uppy⁠](https://uppy.io/docs/transloadit/). Dort finden Sie die vollständige Plug-in-API. Beginnen Sie mit dem[Framework-Leitfaden⁠](https://uppy.io/docs/guides/uppy-transloadit/) für eine vollständige Integration.
