Ich bin neu in CakePHP und ich versuche, einen einfachen Datei-Upload mit CakePHP 2.3 hier ist mein Controller
zu erstellen %Vor%und mein add.ctp
%Vor%speichert Vorname, Nachname, Schlüsselwörter und den Namen der Datei in DB, aber die Datei, die ich in app / webroot / Dokumente speichern möchte, speichert nicht, kann jemand helfen? Danke
%Vor%Aktualisieren
thaJeztah ich tat wie du sagtest, aber es gibt einige Fehler hier ist Controller, wenn ich nicht falsch bin
%Vor%und mein add.ctp
und die Fehler sind
Hinweis (8): Konvertierung von Array zu String [CORE \ Cake \ Model \ Datasource \ DboSource.php, Zeile 1005]
Datenbankfehler Fehler: SQLSTATE [42S22]: Spalte nicht gefunden: 1054 Unbekannt Spalte 'Array' in 'Feldliste'
SQL-Abfrage: INSERT INTO first.posts (Vorname, Nachname, Schlüsselwörter, doc_file) VALUES ('dfg', 'cbhcfb', 'dfdbd', Array)
und Victor ich habe deine Version auch gemacht, es funktioniert auch nicht.
Sie scheinen den falschen "Schlüssel" zu verwenden, um auf die geposteten Daten zuzugreifen;
%Vor%Sollte dem 'Alias' von Ihnen entsprechen Model; singular und ein capital erster Buchstabe
%Vor% Außerdem ist $this->data
ein Wrapper für $this->request->data
für die Abwärtskompatibilität, daher ist es besser, dies zu verwenden;
Um den Inhalt der geposteten Daten zu überprüfen und zu verstehen, wie sie strukturiert sind, können Sie sie mit diesem debuggen;
%Vor% Achten Sie darauf, das Debugging zu aktivieren, indem Sie debug
auf 1
oder 2
auf app/Config/core.php
Ich habe gerade bemerkt, dass Sie auch mehrere (verschachtelte) Formulare in Ihrem Code erstellen;
%Vor% Verschachteln von Formularen funktioniert nie , entfernen Sie diese Zeile und fügen Sie 'type = & gt; Datei 'an die erste Form->create()
Das Problem "Array zu String-Konvertierung" ist darauf zurückzuführen, dass Sie versuchen, die Daten von 'doc_file' für Ihre Datenbank direkt zu verwenden. Da es sich um ein Datei-Upload-Feld handelt, enthält 'doc_file' ein Array mit Daten ('name', 'tmp_name' usw.).
Für Ihre Datenbank benötigen Sie nur den 'Namen' dieses Arrays, daher müssen Sie die Daten vor dem Speichern in der Datenbank ändern.
Für Beispiel auf diese Weise;
%Vor%.. Stellen Sie sicher, dass das Dokumentenverzeichnis bereits existiert und prüfen Sie, ob Sie berechtigt sind, darauf zu schreiben? Wenn es nicht existiert, erstellen Sie es oder in Ihrem Code überprüfen Sie, ob es existiert und erstellen Sie es, wenn es nicht da ist: Beispiel für Code, der prüft, ob das Verzeichnis vorhanden ist oder nicht und erstellen Sie es dann laden Sie die Datei -
%Vor%stellen Sie außerdem sicher, dass Sie keine leere / leere Datei hochladen - dies kann fehlschlagen.
Ich habe den kompletten Leitfaden zum Hochladen von Dateien und Bildern in CakePHP von hier gefunden - Umgang mit Datei-Uploads in CakePHP
Der Beispielcode ist unten angegeben.
Controller:
%Vor%Anzeigen:
%Vor%Tags und Links file-upload cakephp cakephp-2.3