PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   PHP Grundlagen (http://www.selfphp.de/forum/forumdisplay.php?f=12)
-   -   Datei auf Server laden (http://www.selfphp.de/forum/showthread.php?t=8168)

lasso 15.07.2004 14:35:31

Datei auf Server laden
 
Hallo

Ich will eine Datei von der Festplatte auf den Server laden können. Die bestehende Datei auf dem Server soll auf jeden Fall überschrieben werden und egal wie die hochgeladene Datei heisst, sie soll umbenannt werden in Zeitnehmer.xls. Der Ordner list hat chmod 777.
Ich habe folgendes Skript gemacht, das zwar scheinbar funktioniert, jedoch wird die vorhandene Datei nicht überschrieben...

PHP-Code:

<h2>Zeitnehmerliste hochladen</h2>
<?
if ($_REQUEST['submitted'])
{
$log = "";
    if ($dat_name == "") {
        $log = "keine Zeitnehmerliste gewählt<br>";
    } else {
    $dtnm = "Zeitnehmer.xls";
    @copy($dat,"../intern/list/$dtnm") or $log = "konnte Zeitnehmerliste nicht auf Server kopieren<br>";
        if (file_exists("../intern/list/$dtnm")) {
        $log = "Zeitnehmerliste ist aktualisiert<br>";
        }
    }
?>
<p>
<?
echo "$log";
?>
<a href="zeitadmin.php">zurück</a></p>
<? 
exit;
}
?>
<form method=POST action=zeitadmin.php enctype=multipart/form-data>
<input type=file name=dat size=30><br>
<input type="hidden" name="submitted" value="true">
<input type="submit" name="submit" value="hochladen"> 
</form>


xabbuh 15.07.2004 15:00:08

Re: Datei auf Server laden
 
Zitat:

Original geschrieben von lasso
PHP-Code:

<?
@copy($dat,"../intern/list/$dtnm") or $log = "konnte Zeitnehmerliste 
?>


1. Entferne das @ vor copy. Dann werden dir auch eventuelle Fehlermeldungen angezeigt.
2. Würde ich mit move_uploaded_file() statt copy() arbeiten.
3. Arbeite mit dem Array $_FILES.

Der Upload würde dann so aussehen:
PHP-Code:

move_uploaded_file($_FILES['tmp_name'], "../intern/list/" $dtnm); 

Zitat:

Original geschrieben von lasso

PHP-Code:

<?php
    
if (file_exists("../intern/list/$dtnm")) {
        
$log "Zeitnehmerliste ist aktualisiert<br>";
    }
?>


Diese Bedingung dürfte wohl immer TRUE sein, da die Datei auch vor dem Upload schon auf dem Server war. Somit wird die Variable $log hier überschrieben. Eine eventuell vorher erstellte Fehlermeldung, wird somit auch auf keinen Fall mehr angezeigt.

Mach das ganze doch mal folgendermaßen:
PHP-Code:

<?php
    
if($_REQUEST['submitted']) {
        if(empty(
$_FILES['dat'])) {
            
$log "Keine Zeitnehmerliste gewählt";
        } else {
            
$dtnm "Zeitnehmer.xls";
            if(
move_uploaded_file($_FILES['dat']['tmp_name'], "./../intern/list/" $dtnm)) {
                
$log "Zeitnehmerliste ist aktualisiert.";
            } else {
                
$log "Konnte Zeitnehmerlliste nicht auf Server kopieren!";
            }
        }
    }

    echo 
$log;
?>


lasso 15.07.2004 18:39:42

Super, geht perfekt! Vielen Dank!

Gruss
Lasso

bweichel 23.08.2004 15:52:05

Mein Upload funktioniert auch nicht. Habe schon mehrere Ratschläge ausprobiert. Woran kann das liegen?

Hier mein Script:

PHP-Code:

<form action="navigation_upload.php" method="post" enctype="multipart/form-data">

    
Einpflegen: <br>
    <
input type="file" name="file">
    <
br>
    <
br>
    <
input type="submit" value="Upload">

</
form

<br>
<br>
PHP-Code:

if(move_uploaded_file($_FILES['file'], $_FILES['file']['name'])) {
      print 
"Hat alles funktioniert!";


Das Teil geht nie in die Schleife...

Vielen Dank!

Gruß Björn

xabbuh 23.08.2004 16:31:05

Zitat:

Original geschrieben von bweichel
Mein Upload funktioniert auch nicht. Habe schon mehrere Ratschläge ausprobiert. Woran kann das liegen?

Hier mein Script:

PHP-Code:

<form action="navigation_upload.php" method="post" enctype="multipart/form-data">

    
Einpflegen: <br>
    <
input type="file" name="file">
    <
br>
    <
br>
    <
input type="submit" value="Upload">

</
form

<br>
<br>
PHP-Code:

if(move_uploaded_file($_FILES['file'], $_FILES['file']['name'])) {
      print 
"Hat alles funktioniert!";


Das Teil geht nie in die Schleife...

Vielen Dank!

Gruß Björn

- Zugriffsrechte existieren?
- $_FILES ist ein Array und nicht leer?

bweichel 23.08.2004 16:43:38

Hallo,

ja, die Zugriffsrechte existieren.

$_FILES kommt von PHP.NET. Sollte dann wohl auch ein Array sein, oder?

Ich verwende halt copy anstatt move_uploaded_file. Habe es aber auch schon mit move_uploaded_file ausprobiert und es ging auch nicht.

Danke für deine Hilfe!

Gruß Björn

xabbuh 23.08.2004 16:47:39

Zitat:

Original geschrieben von bweichel

$_FILES kommt von PHP.NET.

Lass dir $_FILES einfach mal mit
PHP-Code:

<?php
    
echo "<pre>";
    
print_r($_FILES);
    echo 
"</pre>";
?>

anzeigen.

bweichel 23.08.2004 16:53:01

Ja du hast recht... $_FILES[file] selbst ist leer! Aber warum? Wie bekomme ich die Datei auf den Server?

Das Ergebnis ist:

PHP-Code:

Array ( [file] => Array ( [name] => beispiel-navigation.txt [type] => text/plain [tmp_name] => /tmp/phpXpfA6d [error] => [size] => 308 ) ) 


xabbuh 23.08.2004 17:05:51

PHP-Code:

<?php
    move_uploaded_file
($_FILES['file']['tmp_name'], $_FILES['file']['name']);
?>

Hatte was übersehen. So sollte es funktionieren. Als Source bei move_uploaded_file muss natürlich der temporäre Dateiname angegeben werden.

bweichel 23.08.2004 17:19:02

Hallo Xabbuh,

leider geht das auch nicht. Ich habe es mit $_SERVER und $_FILES und move_uploaded_file und copy ausprobiert. Es ist zum k*****.

Es kommt aber auch keine Fehlermeldung, aber auch keine Datei...


Alle Zeitangaben in WEZ +2. Es ist jetzt 05:22:27 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.