Schauen Sie sich file_save_upload () und die Funktionen an, die es aufrufen.
Die Funktion übernimmt die Validierung der Datei und speichert sie an einem neuen Speicherort. In Drupal 7 wird die Datei auch zur Tabelle file_managed hinzugefügt.
Beachten Sie, dass die Datei als temporäre Datei gespeichert wird. Stellen Sie daher sicher, dass Sie den Status der Datei anschließend auf permanent setzen.
Möglicherweise möchten Sie die Funktion file_save_upload im Validierungs-Hook Ihres Formulars (vor dem Submit-Handler) implementieren, damit Sie den Benutzer benachrichtigen können, wenn der Datei-Upload fehlgeschlagen ist oder Ihre Validierungsanforderungen nicht erfüllt hat.
Wenn der Name des Bildfelds, das Sie image
überprüfen möchten, lautet , sollte der erste Parameter von file_save_upload image sein, und zwar als solches:
$ path = file_save_upload ('image', ...);
Diese Funktion gibt dann den Pfad auf dem Server zurück, auf den das Bild hochgeladen wurde (so können Sie diesen Pfad beispielsweise in einem benutzerdefinierten Datenbankfeld speichern).
$form['#attributes']['enctype']
in Drupal 7 eigentlich nichts . Es wird automatischmultipart/form-data
für Drupal 7 nicht. Es wird in Drupal 7 erstellt, wenn Sie ein Dateifeld verwenden.$file === null
, was bedeutetno file was uploaded
(gemäß den Spezifikationen: api.drupal.org/api/drupal/includes!file.inc/function) /… ) Was soll ich in diesem Fall tun? Wie kann ich so etwas debuggen?Ich habe eine generische Validierungsfunktion, die ich hauptsächlich in Themen verwende, die das Hochladen von Bildern unterstützen müssen. Möglicherweise können Sie es so oder mit geringfügigen Änderungen verwenden, aber dies sollte Sie weit bringen.
Mit dieser Funktion erhalten Sie den Dateipfad als Wert im Formularübermittlungshandler. Abhängig von Ihrer Verwendung möchten Sie möglicherweise stattdessen die Datei-ID.
quelle