Dateiupload auf einen Server

04/13/2012 23:42 al.Jay#1
Hallo zusammen,

ich stehe vor der Aufgabe ca. 50GB Daten von meinem Heimanschluss aus an einen Server in Frankfurt zu schicken.

Logischerweise, habe ich mich erstmal mit FileZilla per FTP verbunden und angefangen die erste Datei (~1GB) hochzuladen. Leider brach der Download nach kurzer Zeit ab.
Ich bin dann in die Config gegangen und habe alle Idlezeiten auf 60.000 gestellt.
Als Resultat lief der Upload dann etwa bis 200MB und brach ab.

Da meine Uploadrate (180KB/s) auch nicht so der Bringer ist, würde ich gerne schnellstmöglich anfangen.
Ich dachte mir könnte evtl. jemand erklären wie ich per HTTP was Uploaden kann (wie z.B. bei Uploaded.to), da mir so ein Upload noch nie abgebrochen ist.

mfG Jay
04/14/2012 02:58 .StarSplash#2
Liegen die Daten als Archiv oder alle einzeln bzw. als Verzeichnis vor ?

Falls es ein Archiv ist könntest du es splitten.

Quote:
Aufbau des Formulars

Damit der Browser eine Datei vom Client zum Server überträgt, benötigen Sie ein <input>-Feld vom Typ file und das Attribut enctype="multipart/form-data" des <form>-Tags. Zusätzlich ist die Übertragungsmethode POST zwingend erforderlich, damit der Datei-Upload fehlerfrei durchgeführt werden kann. Es können sowohl Text- als auch Binärdaten hochgeladen werden.

Code:
<html>
<head>
<title>Dateiupload</title>
</head>
<body>
<p><font face="Arial, Helvetica, sans-serif" size="6">Dateiupload via HTML </font></p>
<form method="post" action="upload.php" enctype="multipart/form-data">
  Datei:
  <input type="hidden" name="MAX_FILE_SIZE" value="100000">
  <input type="file" name="datei" size="40" maxlength="100000">
  <input type="submit" name="Submit" value="Senden">
</form>
</body>
</html>
Informationen zur Datei

Bevor wir uns mit dem upload.php-Skript befassen, sollte ich Ihnen noch die Überprüfungsmöglichkeiten des Servers erläutern. Sobald eine Datei an den Server übertragen wird, wird automatisch das globale Array $_FILES erzeugt. In diesem assoziativen Array sind sämtliche Informationen zur Datei gespeichert.

Beispiel – Erfassen der $_FILES-Informationen

Code:
<html>
<head>
<title>Dateiupload</title>
</head>
<body>
<p><font face="Arial, Helvetica, sans-serif" size="6">Dateiupload via HTML </font></p>
<form method="post" action="<? echo $PHP_SELF ?>" enctype="multipart/form-data">
  Datei:
  <input type="hidden" name="MAX_FILE_SIZE" value="100000">
  <input type="file" name="datei" size="40" maxlength="100000">
  <input type="submit" name="Submit" value="Senden">
</form>
<?php

// Dateiinformationen (Ausgabe über Schleife)
if (isset($_FILES["datei"])) {
  foreach ($_FILES["datei"] as $key=>$element) {
    echo "[$key] => $element<br>";
  }
}
?>
</body>
</html>
...

[Und dann hier der für dich interessante Teil]

Code:
<?php

// Prüfen des Arrays $_FILES
if (isset($_FILES["datei"])) {

// Upload-Status
if ($_FILES["datei"]["error"] == UPLOAD_ERR_OK) {

// Muster zur Überprüfung der im Dateinamen
// enthaltenen Zeichen (Optional)
$regExp = "/^[a-z_]([a-z0-9_-]*\.?[a-z0-9_-])*\.[a-z]{3,4}$/i";

// Dateiname und Dateigröße
if (preg_match($regExp,$_FILES["datei"]["name"]) && $_FILES["datei"]["size"] > 0 && $_FILES["datei"]["size"] < 100000) {

// Temporäre Datei in das Zielverzeichnis
// des Servers verschieben.
move_uploaded_file($_FILES["datei"]["tmp_name"],"shots/".$_FILES["datei"]["name"]);

// Redirect zur Erfolgsmeldung
header("Location: status.html");
}
else {
  echo "Fehler: Im Dateinamen oder Dateigrössen Limit!";
}
}
else {
  echo "Fehler: Während der Übertragung aufgetreten!";
}
}
else {
  echo "Fehler: Dateiupload fehlgeschlagen!";
}

?>
[Only registered and activated users can see links. Click Here To Register...]
04/14/2012 10:08 al.Jay#3
Nein, die Files sind nicht im Archivformat, und ich habe eigentlich kleine Möglichkeit sie auf dem Server wieder zu entpacken.
Ich gucke mir mal den http Uploader an, vielen Dank!


Quote:
$element) { echo "[$key] => $element"; } } ?>
Dieser String aus der index.html, wird nicht ausgeführt, sondern als Text angezeigt. Woran könnte das liegen?
04/14/2012 12:35 .StarSplash#4
Verstehe ich das richtig, dort steht jetzt "[$key] => $element" ?
04/14/2012 15:44 al.Jay#5
Habs schon selber gefixt ;)
Danke!
04/15/2012 17:17 al.Jay#6
Also, PHP bzw. Upload über Port 80 ist auch nicht das Gelbe vom Ei.
Habe jetzt entdeckt, dass ich die Files ganz einfach über den laufenden Teamspeak3 Server uploaden und dann in das entsprechende Verzeichnis verschieben kann.

Gibt es eine Möglichkeit so einen Uploader, auch ohne Teamspeak zu benutzen?
Also wirklich ein eigener Uploadclient und Server?