also folgendes Problem: ich hatte mal ein funktionierendes Upload-Skript was tadellos funktionierte.
Jetzt aber nicht mehr, und ich habe absolut keine Ahnung warum.
Vielleicht kann mir auch einer sagen, ob das Skript auf seinem Server funktioniert (bin selber bei square7).
(Ihr müsst dann nur noch dort wo das script liegt den Ordner "uploads" hinzufügen)
Es geht hierbei nicht um Design oder sonstiges, mein Wunsch ist es nur, das der Upload wieder funktioniert. In diesem Script funktioniert auch noch nicht alles, da es noch in Entwicklung ist.
Spoiler
<!DOCTYPE HTML> <html lang="de"> <head> <title>MediaStorage</title> <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"> <link href="../../Files/Favicons/MediaStorage.ico" rel="shortcut icon" type="image/x-icon"> <style type="text/css"> tr.onHover:hover{background-color:#ededed;} </style> <style> legend { font-weight: bold; color: #333; } #filedrag { display: none; font-weight: bold; text-align: center; padding: 1em 0; margin: 1em 0; color: #555; border: 2px dashed #555; border-radius: 7px; cursor: default; } #filedrag.hover { color: #f00; border-color: #f00; border-style: solid; box-shadow: inset 0 3px 4px #888; } img { max-width: 100%; } pre { width: 95%; height: 8em; font-family: monospace; font-size: 0.9em; padding: 1px 2px; margin: 0 0 1em auto; border: 1px inset #666; background-color: #eee; overflow: auto; } #messages { padding: 0 10px; margin: 1em 0; border: 1px solid #999; } #progress p { display: block; width: 100%; padding: 2px 5px; margin: 2px 0; border: 1px inset #446; border-radius: 5px; background: #eee url("../DevCentre/Upload 3/progress.png") 100% 0 repeat-y; } #progress p.success { background: #0c0 none 0 0 no-repeat; } #progress p.failed { background: #c00 none 0 0 no-repeat; } </style> </head> <body> <?php /* if (!isset($_COOKIE['UserordnerMS']) || $_COOKIE['UserordnerMS'] == '') {$Username = "";} else {$Userordner = $_COOKIE['UserordnerMS'];}*/ $Username = "Anddro"; $Userordner = "uploads/"; ?> <!-- Kopf --> <table> <tr> <td style="width:50%;"> <a href="" class="Ueberschrift2">MediaStorage</a> (<a href="javascript:" onClick="alert('\t\t\tChangelog\n\nVersion 2.0:\n\t* Eingabefelder erkennen Rechenoperatoren\n\t* Upload-Auswahl hinzugefügt\n\t* Codeoptimierungen (W3C-Standard)\n\nVersion 1.1:\n\t* Schriftart/-größe definiert (Arial, 12)\n\t* kleinere Kommastellenrundung (Speed)\n\t* Changelog eingefügt\n\nVersion 1.0:\n\t* Umrechnungen verfügbar\n\t* DSL-Auswahlfeld verfügbar\n\t* Speed-Test verfügbar\n\t* IP-Adresse wird angezeigt\n\nmehr Infos, siehe Quellcode\n\n\t© <?=date("Y")?> Anddro - All Rights Reserved.\n\t\t\twww.anddro.de.vu')" >Version</a>: <span style="color:red;">2.0 pre-Beta 2</span>) </td> <td style="width:50%; text-align:right;"> <select size="1" id="OrdnerlisteAuswahl" onChange="OrdnerlisteAuswahl()"> <option value="" style="font-weight:bold">Eigene Dateien</option> <option value="" style="font-weight:bold">Gemeinsame Dateien</option> <option value="" style="font-weight:bold">Öffentliche Dateien</option> <option value="" disabled>---</option> <?php function ordnerinhalt($folder='uploads') { $content = ""; foreach(scandir($folder) as $file) { if($file[0] != '.') { // Versteckte Dateien nicht anzeigen if(is_dir($folder.'/'.$file)) { $folderArray[] = $file; } else { $fileArray[] = $file; } } } // Erst die Ordner ausgeben if(isset($folderArray)) { foreach($folderArray as $row) { $content .= '<option value="'.$folder.'/'.$row.'">'.$row.'</option>'; $content .= ordnerinhalt($folder.'/'.$row); // rekursive Funktion } } return $content; } echo ordnerinhalt(); ?> <option value="" disabled>---</option> <option value="Neu25423xlosuzy852156xjkfhf923a" style="color:#828282; font-style:italic;">Neuer Ordner</option> <option value="Umbenennen25423xlosuzy852156xjkfhf923a" style="color:#828282; font-style:italic;">Ordner umbenennen</option> <option value="Loeschen25423xlosuzy852156xjkfhf923a" style="color:#828282; font-style:italic;">Ordner löschen</option> </select> </td> </tr> </table> <br> <?php /* // Öffnet ein Unterverzeichnis mit dem Namen "daten" $verzeichnis = openDir("../../Files/Uploads/MediaStorage/$Username/"); // Verzeichnis lesen while ($file = readDir($verzeichnis)) { // Höhere Verzeichnisse nicht anzeigen! if ($file != "." && $file != "..") { // Link erstellen echo "<a href=\"../../Files/Uploads/MediaStorage/$Username/$file\">$file</a><br>\n"; } } // Verzeichnis schließen closeDir($verzeichnis); ?> <hr> <br><br><br><br><br><br><br><br><br><br><br> <?php $buchstabe_alt = ""; $verzeichnis = openDir("../../Files/Uploads/MediaStorage/$Username/"); while ($file = readDir($verzeichnis)) { if ($file != "." && $file != "..") { $buchstabe = strtoUpper(substr($file, 0, 1)); if (!strstr($buchstabe_alt, $buchstabe)) { $buchstabe_alt .= $buchstabe; // Anfangsbuchstaben anzeigen echo "<strong>" . $buchstabe . "</strong> <br>"; } echo "<a href=\"../../Files/Uploads/MediaStorage/$Username/$file\">$file</a><br>\n"; } } closeDir($verzeichnis); */ ?> <script type="text/javascript"> function OrdnerlisteAuswahl() { var OrdnerlisteAuswahl = document.getElementById('OrdnerlisteAuswahl').value; if (OrdnerlisteAuswahl == "Neu25423xlosuzy852156xjkfhf923a"){ var Ueberschrift = "Name für den neuen Ordner eingeben!"; var newdir = prompt(Ueberschrift); document.getElementById('newdir').value = newdir; document.getElementById('operation').value = "newdir"; document.mediastorage.submit(); } } </script> <script type="text/javascript"> function confirmRename(file, filename, filepath) { var Ueberschrift = "Neuen Namen für die Datei \""+filename+"\" eingeben!"; var rename = prompt(Ueberschrift,filename);//man kann auch gleich bei Aufruf der Funktion Prompt, den eingegenen Wert einer Variablen zuweisen document.getElementById('rename').value = rename; document.getElementById('renameold').value = file; document.getElementById('renamepath').value = filepath; document.getElementById('operation').value = "rename"; document.mediastorage.submit(); } </script> <script type="text/javascript"> function confirmDelete(file, filename) { if (confirm("Wollen Sie die folgende Datei wirklich endgültig löschen?\n"+filename+"")) { document.getElementById('operation').value = "erase"; document.getElementById('erase').value = file; document.mediastorage.submit(); } else alert('Die Datei wurde nicht gelöscht!'); } </script> <?php // Datei löschen if ($_POST['operation'] == "erase") { $file = $_POST['erase']; unlink("$file"); } ?> <?php // Datei umbenennen if ($_POST['operation'] == "rename") { $file1 = $_POST['rename']; $file2 = $_POST['renameold']; $file3 = $_POST['renamepath']; $file4 = "$file2"; $file5 = "$file3$file1"; rename("$file4", "$file5"); } ?> <? if ($_POST['operation'] == "newdir") { $Member = $_POST['newdir']; $handle = opendir($Userordner); if ($handle){ mkdir($Userordner."".$Member, 0777) or die("<script language=\"JavaScript\">alert('FEHLER! Ordner nicht erstellbar.\\n\\nMögliche Gründe für den Fehler:\\n\\t* unerlaubtes Zeichen verwendet\\n\\t* Ordner bereits vorhanden'); document.location.href=\"\";</script>"); chmod($Userordner."".$Member, 0777); }else{ die("Ordner nicht vorhanden"); } closedir($handle); } ?> <form name="mediastorage" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"> <input type="hidden" id="operation" name="operation"> <input type="hidden" id="erase" name="erase"> <input type="hidden" id="rename" name="rename"> <input type="hidden" id="renameold" name="renameold"> <input type="hidden" id="renamepath" name="renamepath"> <input type="hidden" id="newdir" name="newdir"> </form> <table> <tr> <td style="width:50%;"> <table> <tr> <td style="width:1px; white-space:nowrap;"></td> <td><b>Dateiname</b></td> <td style="width:50px; white-space:nowrap;"><b>Erw.</b></td> <td style="width:60px; white-space:nowrap;"><b>Größe</b></td> <td style="width:90px; white-space:nowrap;" title="Datum der letzten Dateiänderung (meist Zeit des Uploads)"><b>Datum</b></td> <td colspan="2"></td> </tr> <?php $ordner = "$Userordner"; //auch Pfade möglich ($ordner = "download/files";) $alledateien = scandir($ordner); natcasesort($alledateien); foreach ($alledateien as $datei) { $dateiinfo = pathinfo($ordner."/".$datei); // $dateiinfo['filename'] = Dateiname ohne Dateiendung *erst mit PHP 5.2 // $dateiinfo['dirname'] = Verzeichnisname // $dateiinfo['extension'] = Dateityp -/endung // $dateiinfo['basename'] = voller Dateiname mit Dateiendung // Größe ermitteln zur Ausgabe $size = ceil(filesize($ordner."/".$datei)); // hier ists dann in Bytes if($size < 1000000) { $size = number_format($size/1024, 0, ",", ".")." kB"; } elseif($size < 1000000000) { $size = number_format($size/1048576, 1, ",", ".")." MB"; } else { $size = number_format($size/1073741824, 1, ",", ".")." GB"; } //1024 = kb | 1048576 = MB | 1073741824 = GB | 1099511627776 = TB $unixTime = filemtime($ordner."/".$datei); // verhindert Anzeige von "." und ".." if ($datei != "." && $datei != ".." && is_dir($dateiinfo['dirname']."/".$dateiinfo['basename']) == "0" && $dateiinfo['basename'] != ".ftpquota") { ?> <tr class="onHover"> <td style="width:1px; white-space:nowrap;"><?php $DateiIcon = $dateiinfo['extension']; $DateiIcon = "../../Files/MediaStorage/$DateiIcon.png"; if(file_exists($DateiIcon)){echo "<img src=\"$DateiIcon\" width=\"24px\" height=\"24px\">";} else {echo "<img src=\"../../Files/MediaStorage/blank.png\" width=\"24px\" height=\"24px\">";} ?> </td> <td style="vertical-align:middle;"><a style="display:block;" target="Dateianzeige" href="<?php echo $dateiinfo['dirname']."/".$dateiinfo['basename'];?>" title="<?php echo $dateiinfo['basename'];?>"><?php if(strlen($dateiinfo['filename']) >= 24) $dateiinfo['filename'] = substr($dateiinfo['filename'],0,24).' ...'; echo $dateiinfo['filename']; ?></a></td> <td style="vertical-align:middle;"><?php echo $dateiinfo['extension']; ?></td> <td style="vertical-align:middle; text-align:right;">[<?php echo $size; ?>]</td> <td style="vertical-align:middle; text-align:right;" title="<?php $zeit = date("d.m.Y, h:m", $unixTime); echo $zeit; ?> Uhr"><?php $zeit = date("d.m.Y", $unixTime); echo $zeit; ?></td> <td style="width:1px; white-space:nowrap; vertical-align:middle; text-align:center;"> <a href="javascript:confirmRename('<?php echo $dateiinfo['dirname']."/".$dateiinfo['basename'];?>', '<?php echo $dateiinfo['basename']; ?>', '<?php echo $dateiinfo['dirname']."/"; ?>')"><img src="../Files/Grafiken/Umbenennen.png" width="24px" height="24px" title="Datei umbenennen" alt="[€]"></a></td> <td style="width:1px; white-space:nowrap; vertical-align:middle; text-align:right;"> <a href="javascript:confirmDelete('<?php echo $dateiinfo['dirname']."/".$dateiinfo['basename'];?>', '<?php echo $dateiinfo['basename']; ?>')"><img src="../Files/Grafiken/Loeschen.png" width="24px" height="24px" title="Datei löschen" alt="[X]"></a></td> </tr> <?php }; }; ?> <tr> <td colspan="7"><hr></td> </tr> <tr> <td> <?php $menge = 0; $dirsize = 0; $verz = "$Userordner"; $dir = opendir($verz); while (($file = readdir($dir))!==false) { if ($file[0] <> '.') { $menge++; $dirsize = $dirsize + filesize($verz.$file); }} closedir($dir); if($dirsize < 1000000) { $dirsize = number_format($dirsize/1024, 0, ",", ".")." kB"; } elseif($dirsize < 1000000000) { $dirsize = number_format($dirsize/1048576, 1, ",", ".")." MB"; } else { $dirsize = number_format($dirsize/1073741824, 1, ",", ".")." GB"; } ?></td> <td colspan="2">Dieser Ordner enthält: <b><?php $paths = array($Userordner); $files = array(); foreach($paths as $path) { $h = opendir($path); while ($o = readdir($h)) { if (!is_file($path.$o)) continue; array_push($files, $o); } } echo count($files);?> Dateien</b></td> <td style="white-space:nowrap; text-align:right;" colspan="2"><b>[<?=$dirsize?>]</b></td> <td style="width:1px; white-space:nowrap; vertical-align:middle; text-align:right;"> <form action="http://127.0.0.1:9666/flash/add" target="hidden" method="post" name="JDonedir"> <input type="hidden" name="passwords" value="004865"> <input type="hidden" name="source" value="http://....."> <input type="hidden" name="urls" value="<?php $ordner = "$Userordner"; //auch Pfade möglich ($ordner = "download/files";) $alledateien = scandir($ordner); natcasesort($alledateien); foreach ($alledateien as $datei) { $dateiinfo = pathinfo($ordner."/".$datei); if ($datei != "." && $datei != ".." && is_dir($dateiinfo['dirname']."/".$dateiinfo['basename']) == "0" && $dateiinfo['basename'] != ".ftpquota") {echo "http://collector.square7.ch/".$dateiinfo['dirname']."/".$dateiinfo['basename']; echo "\r\n";} };?>"><a href="javascript:document.JDonedir.submit();"><img src="../Files/Grafiken/jDownloader.png" width="24px" height="24px" alt="(jD)" title="Alle Dateien aus diesem Ordner herunterladen"></a></form> </td> <td style="width:1px; white-space:nowrap; vertical-align:middle; text-align:right;"><img src="../Files/Grafiken/Loeschen.png" width="24px" height="24px" alt="[X]" title="Alle Dateien aus diesem Ordner löschen"></td> </tr> <tr> <td colspan="7"><hr><hr></td> </tr> <tr> <td> <? $path = "$Userordner"; $i = 0; $dir = opendir($path); while(readdir ($dir)) { if(!is_dir($path."/".$dir)) $i++; }; closedir($dir); ?> </td> <td colspan="2">Alle Ordner enthalten: <b><?=$i?> Dateien</b></td> <td style="white-space:nowrap; text-align:right;" colspan="2"><b> [<? function dir_size($dir, &$size, $recursive=TRUE) { $handle = @opendir($dir); if(!$handle) return false; while ($file = @readdir ($handle)) { if (eregi("^\.{1,2}$",$file)) { continue; } if(!$recursive && $dir != $dir.$file."/") { if(is_dir($dir.$file)) continue; } if(is_dir($dir.$file)) { dir_size($dir.$file."/", $size, $recursive); } else { $size += filesize($dir.$file); } } @closedir($handle); } $size = 0; dir_size("$Userordner", $size, TRUE); if($size < 1000000) { $size = number_format($size/1024, 0, ",", ".")." kB"; } elseif($size < 1000000000) { $size = number_format($size/1048576, 1, ",", ".")." MB"; } else { $size = number_format($size/1073741824, 1, ",", ".")." GB"; } echo $size;?>] </b> </td> <td style="width:1px; white-space:nowrap; vertical-align:middle; text-align:right;"><img src="../Files/Grafiken/jDownloader.png" width="24px" height="24px" alt="(jD)" title="Alle Dateien herunterladen"></td> <td style="width:1px; white-space:nowrap; vertical-align:middle; text-align:right;"><img src="../Files/Grafiken/Loeschen.png" width="24px" height="24px" alt="[X]" title="Alle Dateien löschen"></td> </tr> </table> </td> <td style="width:50%; text-align:right;"><iframe src="MediaStorage/Dateianzeige.htm" name="Dateianzeige" style="width:495px; height:278px;"></iframe><br> <form id="upload" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST" enctype="multipart/form-data"> <fieldset> <legend>HTML File Upload</legend> <input type="hidden" id="MAX_FILE_SIZE" name="MAX_FILE_SIZE" value="209715200" /> <!-- max. 200MB (die Zahl ist in bytes) --> <div> <label for="fileselect">Files to upload:</label> <input type="file" id="fileselect" name="fileselect[]" multiple="multiple" /> <div id="filedrag">or drop files here</div> </div> <div id="submitbutton"> <button type="submit">Upload Files</button> </div> </fieldset> </form> <div id="progress"></div> <div id="messages"></div> <script> (function() { // getElementById function $id(id) { return document.getElementById(id); } // output information function Output(msg) { var m = $id("messages"); m.innerHTML = msg + m.innerHTML; } // file drag hover function FileDragHover(e) { e.stopPropagation(); e.preventDefault(); e.target.className = (e.type == "dragover" ? "hover" : ""); } // file selection function FileSelectHandler(e) { // cancel event and hover styling FileDragHover(e); // fetch FileList object var files = e.target.files || e.dataTransfer.files; // process all File objects for (var i = 0, f; f = files[i]; i++) { ParseFile(f); UploadFile(f); } } // output file information function ParseFile(file) { if (file.size <= $id("MAX_FILE_SIZE").value) { Output( "<p>File information: <strong>" + file.name + "</strong> type: <strong>" + file.type + "</strong> size: <strong>" + file.size + "</strong> bytes</p>" ); } else {alert('Die folgende Datei ist leider zu groß und wurde nicht hinzugefügt:\n'+file.name+'\nEs sind nur maximal 200MB erlaubt!');} } // upload files function UploadFile(file) { // following line is not necessary: prevents running on SitePoint servers if (location.host.indexOf("sitepointstatic") >= 0) return var xhr = new XMLHttpRequest(); if (xhr.upload && file.size <= $id("MAX_FILE_SIZE").value) { // && file.type == "image/jpeg" rausgenommen // create progress bar var o = $id("progress"); var progress = o.appendChild(document.createElement("p")); progress.appendChild(document.createTextNode("upload " + file.name)); // progress bar xhr.upload.addEventListener("progress", function(e) { var pc = parseInt(100 - (e.loaded / e.total * 100)); progress.style.backgroundPosition = pc + "% 0"; }, false); // file received/failed xhr.onreadystatechange = function(e) { if (xhr.readyState == 4) { progress.className = (xhr.status == 200 ? "success" : "failure"); } }; // start upload xhr.open("POST", $id("upload").action, true); xhr.setRequestHeader("X_FILENAME", file.name); xhr.send(file); } } // initialize function Init() { var fileselect = $id("fileselect"), filedrag = $id("filedrag"), submitbutton = $id("submitbutton"); // file select fileselect.addEventListener("change", FileSelectHandler, false); // is XHR2 available? var xhr = new XMLHttpRequest(); if (xhr.upload) { // file drop filedrag.addEventListener("dragover", FileDragHover, false); filedrag.addEventListener("dragleave", FileDragHover, false); filedrag.addEventListener("drop", FileSelectHandler, false); filedrag.style.display = "block"; // remove submit button submitbutton.style.display = "none"; } } // call initialization file if (window.File && window.FileList && window.FileReader) { Init(); } })(); </script> <?php $fn = (isset($_SERVER['HTTP_X_FILENAME']) ? $_SERVER['HTTP_X_FILENAME'] : false); if ($fn && $Username == "Anddro") { // AJAX call file_put_contents( 'uploads/' . $fn, file_get_contents('php://input') ); exit(); } if ($fn && $Username == "AlyxO") { // AJAX call file_put_contents( 'uploads/' . $fn, file_get_contents('php://input') ); exit(); } ?> </td> </tr> </table> <?php /* function ordnerinhalt($folder='../../Files/Uploads/MediaStorage/Anddro') { $content = ""; foreach(scandir($folder) as $file) { if($file[0] != '.') { // Versteckte Dateien nicht anzeigen if(is_dir($folder.'/'.$file)) { $folderArray[] = $file; } else { $fileArray[] = $file; } } } // Erst die Ordner ausgeben if(isset($folderArray)) { foreach($folderArray as $row) { $content .= '<b>'.$row.'</b><br />'; $content .= '<div style="padding-left:10px;color:#afafaf" />'; //Unterordner nach Rechts einrücken $content .= ordnerinhalt($folder.'/'.$row); // rekursive Funktion $content .= '</div>'; } } // ...dann die Dateien ausgeben if(isset($fileArray)) { foreach($fileArray as $row) { $content .= '<a href="'.$folder.'/'.$row.'">'.$row.'</a><br />'; //Dateien verlinken } } // Rekursion ende return $content; } echo ordnerinhalt(); */ ?> <!-- Bugs: * --> </body> </html>
Ein weiteres komisches Verhalten was ich mal festgestellt habe: normalerweise um ein <div> einzublenden nutze ich:
document.getElementById("NeuladenMessage").style.display = "";und plötzlich muss ich in der einen funktion aber
document.getElementById("NeuladenMessage").style.display = "block";angeben, warum?
Vielen Dank für eure Antworten schon mal!
Schöne Grüße
Anddro
PS: habe die Datei auch mal in den Anhang hochgeladen
Angehängte Datei(en)
-
MediaStorage.zip (6,71K)
Anzahl der Downloads: 108