dateiupload und speicherung in ordner
micha
- php
hallo,
ich habe mir gerade ein formular gebastelt, mit welchem man später bilder auf den server laden kann und diese automatisch in ein verzeichnis kopiert werden. dabei wird dies auch alles in eine datenbank gepackt.
ich führe das zz bei mir lokal auf dem rechner aus. habe nen apache-server mit php und mysql am laufen.
wenn ich nun jedoch ein bild "hochlade", wird dies nicht in den angegebenen ordner reinkopiert. es passiert nichts.
ich hab ja die vermutung, dass ich was in der php.ini noch nicht richtig habe. habe schon mit
upload_tmp_dir = C:\tmp
versucht aber auch das hat nicht funktioniert.
hier noch der quelltext
...
foreach($HTTP_POST_FILES as $strFieldName => $arrPostFiles){
if($arrPostFiles['size'] > 0){
$strFileName = $arrPostFiles['name'];
$intFileSize = $arrPostFiles['size'];
$strFileTemp = $arrPostFiles['temp_name'];
copy($arrPostFiles['temp_name'], "./graphics/projects/project_$pro_id/detail_$count.jpg");
echo("Bild <b>$strFileName (umbenannt in detail_$count.jpg)</b> erfolgreich hochgeladen (Grösse: $intFileSize Bytes)<br/>");
$count++;
}
}
bin recht neu in diesem gebiet und hab noch keine erfahrung damit.
vielen dank im voraus,
micha
Hallo,
foreach($HTTP_POST_FILES as $strFieldName => $arrPostFiles){
u.s.w.
Dein Skript ist veraltet.
Ein aktuelles Beispiel (mit $_FILES) findest Du hier:
http://www.dclp-faq.de/q/q-formular-upload-php4.html
Nimm lieber das als Grundlage, bevor Du weiterbastelst.
Gruesse,
Thomas
danke, werde ich mir mal anschauen.
allerdings glaub ich immer noch, dass was in der .ini gesetzt werden muss, denn ansonsten funkt das skript ja.
das hochzuladende skript wird nur nicht temporär zwischengespeichert.
daher kann man es auch nicht von dieser temp.location in nen anderen ordner kopieren.
ich denke, das problem wäre immer noch, auch wenn ich das skript ändern würde...
Hello,
Du magst mit dem Setting Recht haben.
Bei Windows heißt der temporäre Ordner \windows\TEMP und bei Linux /tmp
Das sollte man schon richtig eingestellt haben.
Und dann noch was: Sowohl Du als auch das Musterscript von PHP.net sind "faul"
Die Funtionen copy() und move_uploaded_file() geben beide einen Rückgabewert, ob es geklappt hat oder nicht. Sen sollte man schon auswerten, bevor man einfach eine Meldung ausgibt.
Grüße
Tom
wie habt ihr denn das bei euch eingestellt?
ich kann machen was ich will, es funkt einfach nicht.
der fehler liegt definitiv in der php.ini.
meine derzeitigen einstellungen:
;;;;;;;;;;;;;;;;
; File Uploads ;
;;;;;;;;;;;;;;;;
; Whether to allow HTTP file uploads.
file_uploads = On
; Temporary directory for HTTP uploaded files (will use system default if not
; specified).
upload_tmp_dir = \tmp
; Maximum allowed size for uploaded files.
upload_max_filesize = 5M
wäre nett, wenn jemand mal seine einstellung in der ini posten könnte.
micha
Hello,
upload_tmp_dir = C:\windows\temp
Und dann den Apachen neu starten.
Grüße
Tom
wie gesagt, das skipt funktioniert soweit bis auf das kopieren der datei (was ja eigentlich das wichtigste ist).
aber vom aufbau her müsste es ja funktionieren.
daher die genauere frage:
was muss ich in der php.ini ändern, um die lokale speicherung zuzulassen bzw nen ordner dafür anzugeben.
meine einstellungen sind:
;;;;;;;;;;;;;;;;
; File Uploads ;
;;;;;;;;;;;;;;;;
; Whether to allow HTTP file uploads.
file_uploads = On
; Temporary directory for HTTP uploaded files (will use system default if not
; specified).
upload_tmp_dir = C:\tmp
; Maximum allowed size for uploaded files.
upload_max_filesize = 5M
vielleicht kann mir damit jemand weiterhelfen
Hello,
; Temporary directory for HTTP uploaded files (will use system default if not
; specified).
upload_tmp_dir = C:\tmp
siehe mein anderes Posting.
Das Verzeichnis mur vorhanden sein und auch auf Dateisystemebene für den Apachen (hast Du doch, oder) freigegeben sein.
Grüße
Tom