2012-03-29 20 views
1

Ich versuche gerade, eine CSV-Datei in eine Datenbank durch einfaches HTML und dann php hochzuladen. Mein Problem ist, ich weiß, wie man die Dinge Arbeit/was tatsächlich passiert (ich denke, das ist, warum ich so viele Fragen haben)Hochladen einer Datei html/php

Wie auch immer mein HTML ist wie folgt:

<html> 
<form action="mysite.php" method="POST"> 
<input type="file" name="file"><br /> 
<input type="submit" value="Now upload it!"> 
</form> 
</html> 

Meine PHP ist einfach:

Bevor ich die Datei tatsächlich in einer Datenbank meiner Wahl speichern wo ist die Datei tatsächlich gespeichert?

Wird es als temporäre Datei auf dem Server erstellt? Gespeichert auf dem Server ram? Ist es nicht wirklich etwas tun, da es nicht gesagt hat, etwas zu tun (auch bekannt als: DB speichern)

Dank

+2

Nun, so weit es wirklich nichts (buchstäblich), ausgehend von der „multipart/form-data“ Form-Codierung benötigt fehlt, wenn eine Datei hochladen. Sie sollten ein wenig über die Vorgehensweise forschen, starten Sie von hier: http: //php.net/manual/en/features.file-upload.php –

+2

Es ist noch nicht einmal eine Datei hochladen zu diesem Zeitpunkt. Sie benötigen den richtigen Enctype. '

'. Nachdem Sie das sortiert haben, würde ich vorschlagen, in Ihrem Empfangsscript eine 'print_r ($ _ FILES);' zu machen, um zu sehen, wie die Informationen gepostet werden. – MetalFrog

+0

Verwenden Sie eine 'print_r ($ _FILES);' in Ihrer mysite.php-Datei, und ich denke, Sie können weitergehen. – hjpotter92

Antwort

2

Ja, es in einer temporären Datei auf dem Server sein würde, aber in Ihrem Fall wäre es nicht, weil Sie den Codierungstyp verpasst:

<form enctype="multipart/form-data" action="__URL__" method="POST"> 

Hier ist das Handbuch auf Datei php file uploading

Hochladen Sie können Sehen Sie, was hochgeladen wird, indem Sie var_dump ($ _ POST) für Variablennamen und var_dump ($ _ FILES) für Dateidaten ausführen, um das Verständnis zu erleichtern.

Wie Sie in der Referenz sehen können, sobald die Datei hochgeladen wurde, müssen Sie sie von ihrem temporären Speicherort zu ihrem endgültigen Ziel verschieben.

+0

Schlagen Sie es tot an. Es ist noch nicht einmal eine temporäre Datei wegen des fehlenden Kodierungstyps. Vielen Dank. – EGHDK

0

Wenn Sie Upload-Datei auf dem Server gespeichert ist, danach, wenn Sie diese CSV importieren möchten Zur Datenbank müssen Sie PHP-Skript verwenden, um es (CSV Parser) zu analysieren und in DataBase einzufügen. Oder wenn Sie nur den Dateipfad und nicht die Daten von CSV speichern möchten, müssen Sie nur den Dateipfad in DataBase speichern.

0

Die Datei wird vorübergehend gespeichert, solange das Skript ausgeführt wird. Die Information kann in $ _FILES gefunden werden.

1

Ich empfehle this

Im Wesentlichen liest, wird die Datei über HTTP hochgeladen, und PHP speichert sie in einer temporären Datei auf dem Server.

Sie können ein Handle für diese temporäre Datei mit dem globalen Array $_FILES erhalten.

0

Die Datei sollte in einer temporären Datei auf dem Server gespeichert werden, und Sie können Informationen darüber mit dem Superglobal $_FILES herausfinden. Sie können, indem Sie Ihre Skript beginnen die superglobalen abzuladen, um zu sehen, was drin ist:

<?php 
print_r($_FILES); 
?> 

PHP eine Auswahl an nützlichen Funktionen bietet mit Datei-Uploads zu tun, und Sie sollten diese verwenden, anstatt nur in das Dateisystem zu erreichen - Denken Sie daran, dass jeder Datei-Upload als Benutzereingabe zählt und somit ein Sicherheitsrisiko darstellt!Sie sollten durch Überprüfung starten, wenn die Datei derjenige ist, für den Sie suchen:

$filename = $_FILES['attachment']['tmp_name']; 
if (!is_uploaded_file($filename)) { 
    // error 
} 

Und können Sie die move_uploaded_file() Funktion verwenden, um die Datei irgendwo bequemer zu halten:

if (move_uploaded_file($_FILES['attachment']['tmp_name'], '/more/useful/path') { 
    // all good 
} 

Schließlich sollten Sie daran denken, dass nicht nur die Datei selbst, sondern auch der Dateiname und die angegebene Dateigröße vom Benutzer übermittelte Daten sind, und stellen Sie sicher, dass diese vor der Verwendung entsprechend bereinigt werden.

Es gibt eine Tonne praktisch Sachen hier: http://uk.php.net/manual/en/features.file-upload.php