Heim > Backend-Entwicklung > PHP-Tutorial > Wie lade ich Dateien mit file_get_contents() mit mehrteiligem Inhaltstyp und Grenze hoch?

Wie lade ich Dateien mit file_get_contents() mit mehrteiligem Inhaltstyp und Grenze hoch?

DDD
Freigeben: 2024-10-18 12:30:30
Original
1079 Leute haben es durchsucht

How to Upload Files Using file_get_contents() with Multipart Content-Type and Boundary?

Dateien mit file_get_contents() hochladen

Während cURL eine unkomplizierte Methode zum Hochladen von Dateien bietet, ist es möglich, die Funktion file_get_contents() mit zu nutzen der HTTP-Stream-Kontext. Bei diesem Ansatz wird eine mehrteilige Content-Type-Anfrage mit einer definierten Grenze erstellt.

Multipart Content-Type und Grenze:

Multipart Content-Type ermöglicht mehrere Teile im HTTP Anfragetext. Eine vom Textinhalt getrennte Begrenzungszeichenfolge fungiert als Trennzeichen zwischen Teilen. So definieren Sie eine Grenze:

<code class="php">define('MULTIPART_BOUNDARY', '--------------------------' . microtime(true));</code>
Nach dem Login kopieren

HTTP-Header und Inhaltstext:

Der Content-Type-Header gibt die Grenze zum Webserver an:

<code class="php">$header = 'Content-Type: multipart/form-data; boundary=' . MULTIPART_BOUNDARY;</code>
Nach dem Login kopieren

Als nächstes erstellen Sie den Inhaltskörper, indem Sie Teile für jede Datei und jedes Feld erstellen:

<code class="php">define('FORM_FIELD', 'uploaded_file');

$filename = "/path/to/uploaded/file.zip";
$file_contents = file_get_contents($filename);

$content = "--" . MULTIPART_BOUNDARY . "\r\n" .
            "Content-Disposition: form-data; name=\"" . FORM_FIELD . "\"; filename=\"" . basename($filename) . "\"\r\n" .
            "Content-Type: application/zip\r\n\r\n" .
            $file_contents . "\r\n";</code>
Nach dem Login kopieren

Fügen Sie nach Bedarf zusätzliche POST-Felder hinzu:

<code class="php">$content .= "--" . MULTIPART_BOUNDARY . "\r\n" .
            "Content-Disposition: form-data; name=\"foo\"\r\n\r\n" .
            "bar\r\n";</code>
Nach dem Login kopieren

Beenden Sie die Anfrage mit eine nachgestellte Grenze:

<code class="php">$content .= "--" . MULTIPART_BOUNDARY . "--\r\n";</code>
Nach dem Login kopieren

Stream-Kontext und Ausführung:

Erstellen Sie den Stream-Kontext:

<code class="php">$context = stream_context_create(array(
    'http' => array(
          'method' => 'POST',
          'header' => $header,
          'content' => $content,
    )
));</code>
Nach dem Login kopieren

Führen Sie abschließend den Upload aus:

<code class="php">file_get_contents('http://url/to/upload/handler', false, $context);</code>
Nach dem Login kopieren

Hinweis: Kodieren Sie Binärdateien nicht vor dem Senden, da HTTP Binärdaten verarbeiten kann.

Das obige ist der detaillierte Inhalt vonWie lade ich Dateien mit file_get_contents() mit mehrteiligem Inhaltstyp und Grenze hoch?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage