Ich habe dem Hochladen von Dateien bisher nicht viel Aufmerksamkeit geschenkt, habe aber festgestellt, dass es einige Probleme gab.
Der Programmcode am Anfang lautet wie folgt:
uploadimg.php
<?php
//Bestimmen Sie, ob es sich um eine Upload-Schnittstelle oder eine Implementierungsschnittstelle handelt. Wenn es sich um eine Upload-Schnittstelle handelt, zeigen Sie die folgende HTML-Seite an
if(!$_POST['UploadAction']):
?>
<html>
<Kopf>
<title></title>
</head>
<body><table><center>
<form enctype="multipart/form-data" name="SubmitForm" action="" method="post">
<input type="hidden" name="UploadAction" value="1">
<tr><td><input name="UploadFile" type="file" size="30"></td></tr>
<tr><td><input type="submit" name="submit" value="Upload"></td>
<td><input type="reset" name="reset" value="Reset"></td></tr>
</form>
</center></table></body>
</html>
<?php
//Wenn es sich um eine Implementierungsseite handelt, zeigen Sie die folgende HTML-Seite an und aktivieren Sie das PHP-Skript
sonst:
?>
<html>
<Kopf>
<title></title>
</head>
<Körper>
<?php
//www.knowsky.com initialisiert den Status von UploadAction
$UploadAction=0;
$UploadFile=$_POST['UploadFile'];
if(($UploadFile!="none") && ($UploadFile!=""))
{
$UploadPath=$_SERVER['DOCUMENT_ROOT']."\"
if (!is_writeable($UploadPath))
{
echo „$UploadPath-Verzeichnis ist nicht beschreibbar!“;
}
anders
{
echo „$UploadPath-Verzeichnis ist beschreibbar!“;
}
$FileName=$UploadFile_name;
if($UploadFile_size<1024)
{
$FileSize=(string)$UploadFile_size."byte";
}
elseif($UploadFile_size<(1024*1024))
{
$FileSize=number_format((double)($UploadFile_size/1024),1)."KB";
}
anders
{
$FileSize=number_format((double)($UploadFile_size/(1024*1024)),1)."KB";
}
if(!file_exists($UploadPath.$FileName))
{
if(move_uploaded_file($UploadFile,$UploadPath.$FileName))
{
echo „Datei $UploadFile_name ($FileSize) erfolgreich hochgeladen!“;
}
anders
{
echo „Das Hochladen der Datei $UploadFile_name ($FileSize) ist fehlgeschlagen!“;
}
unlink($UploadPath.$FileName);
}
anders
{
echo „Die Datei $UploadFile_name existiert bereits!“;
}
}
anders
{
echo „Sie haben keine Datei zum Hochladen ausgewählt, oder die hochgeladene Datei überschreitet $MAX_FILE_SIZE!“;
}
?>
<br><a href="uploadimg.php">Zurück</a>
</body>
</html>
<?php
endif
?>
Nachdem ich es ausgeführt hatte, stellte ich fest, dass der Upload überhaupt keine Wirkung hatte und ich nicht einmal die Implementierungsseite aufrufen konnte. Nachdem ich gesucht und gefragt hatte, erfuhr ich, dass $_FILES benötigt wird, um die hochgeladene Datei zu erhalten,
also habe ich einige Änderungen vorgenommen:
$UploadFile=$_FILES['UploadFile']['tmp_name'];
$UploadFile_size=$_FILES['UploadFile']['size'];
$UploadFile_name=$_FILES['UploadFile']['name'];
$FileName=strtolower($UploadFile_name);
Ich dachte, es wäre inzwischen erledigt, aber es erschien eine Fehlermeldung:
Warnung: move_uploaded_file(F:Serverwww): Fehler beim Öffnen des Streams: Berechtigung verweigert in F:Serverwwweooolfinishuploadimg.php in Zeile 76
Warnung: move_uploaded_file(): „E:WINDOWSTEMPphp34.tmp“ kann nicht nach „F:\Server\www“ in F:Serverwwweooolfinishuploadimg.php in Zeile 76 verschoben werden
Datei *****(****Bytes) konnte nicht hochgeladen werden!
Und ich habe auf dem WIN-System debuggt, also sollte es kein Dateiberechtigungsproblem geben, aber ich konnte es immer noch nicht herausfinden. Ich habe Nachrichten auf Lao Lao und Joy gepostet, um Hilfe zu erhalten. Aber ich habe nicht die richtige Antwort erhalten, was mehr als einen Tag gedauert hat, und ich habe es immer noch nicht geschafft, was mich sehr frustriert hat. Ich konnte im Internet keine ähnlichen Fehler finden.
Am Ende blieb mir nichts anderes übrig, als darüber nachzudenken, warum ich beim Debuggen mit Sablog erfolgreich Anhänge hochladen konnte. Deshalb habe ich mir den Originalcode zum Hochladen des Anhangs auf Sablog sorgfältig angesehen und basierend auf dem Code die folgenden Änderungen vorgenommen:
Funktion getextension($filename) {
return substr(strrchr($filename, "."), 1);
}
$extension=getextension($FileName);
if(move_uploaded_file($UploadFile,$UploadPath."temp.".$extension))
//unlink($UploadFile);
unlink($UploadPath."temp.".$extension);
Die Ergebnisse gingen sofort ein und der Upload war erfolgreich!
Ich verwende hier unlink($UploadPath."temp.".$extension); um die in den Space hochgeladenen Dateien sofort zu löschen und Platz zu sparen.