March 27, 2003
EDIT: Se sista inlägget.
För den som inte vet håller jag fortfarande på med mitt uploadscript.
1. När filen har laddats upp (eller när nått gått snett) visas en sida med diverse info. Tex såhär:
//Ingen fil angiven.
if (!is_uploaded_file($_FILES['userfile']['tmp_name'])) {
echo "Du har inte angett vilken fil du vill ladda upp.
Gå tillbaka och försök igen.";
exit();
}
Då vill jag helt enkelt ha en länk tillbaka till upload.php, hur lyckas jag med detta?
2. När en uppladdning lyckats visas detta plus att lite info om filen visas.
// Kolla att en fil är uppladdad och flytta den till målkatalogen
$file_name = $_FILES['userfile']['name'];
$file_size = $_FILES['userfile']['size'];
$file_size_kb = $file_size/1024;
if (isset($_POST['submit']) && is_uploaded_file($_FILES['userfile']['tmp_name'])) {
move_uploaded_file($_FILES['userfile']['tmp_name'], $target_dir.$_FILES['userfile']['name']);
echo "Uppladdningen är klar!
Filnamn: $file_name
Storlek: $file_size_kb kB
Länk: Direktlänk till filen";
}
Den variabel jag kallar '$file_size_kb' funkar bra bara de att den tar med ca 8 decimaler :bgrin: Jag vill ha 1.
Där jag skrivit 'Direktlänk till filen' vill jag att en direktlänk till filen ska visas, (:P) hur gör jag de?
Alla tips är välkomna, jag är kass på PHP.
June 30, 2001
1. Det är enkelt. Du använder dig utav vanlig html-kod inom echo. Det blir alltså så här:
//Ingen fil angiven.
if (!is_uploaded_file($_FILES['userfile']['tmp_name'])) {
echo "Du har inte angett vilken fil du vill ladda upp.
<a href=upload.php>Gå tillbaka och försök igen.</a>";
exit();
}
Detta gör "Gå tillbaka och försök igen" till en länk.
2. Du ska använda round().
Generellt är det round(nummer_som_ska_avrundas, antal_decimaler). Alltså blir det så här:
Filnamn:[/b] echo round($filesize, 2)
Ska klura lite på direktlänkningen och ger svar om en stund 😉
June 30, 2001
Direktlänkning
Lägg till den här variablen:
$address = "http://address-till-upload-mappen/" . $filename;
Sedan ändrar du:
Länk: Direktlänk till filen";
till
Länk: <a href=$address>$address</a>";
Kanske inte den bästa lösningen men den fungerar. Jag har säkert skrivit fel någonstans, men det kan du säkert hitta och fixa 😉
June 30, 2001
Etheral wrote: edit: svarade visst på helt fel fråga :bgrin:
header() kan inte användas efter att man gjort en utskrift. Fast man skulle kunna lösa det genom att sätta en variaben högst upp på sidan före någon utskrift. Sedan kan man skriva ut variablen.
$header = header("Location: upload.php");
...
print $header;
Edit: hann inte se din edit 😉
March 27, 2003
Återigen stort tack Mathias, det gick fint alltihop!
En ny fråga: (sista, jag lovar :P)
Om nån laddar upp en fil som redan finns (eller snarare att det finns en fil med samma namn) så visas ett meddelande. Nu ser det ut såhär;
//Om fil redan finns.
elseif( file_exists($target_dir . "/" . $_FILES['userfile']['name'])) {
echo "Filnamnet används redan av en annan fil. Döp om filen och försök igen.
<a href=upload.php>Tillbaka till Public Uploader</a>";
exit();
}
Jag vill nu ha med själva filnamnet i felmeddelandet.
Jag trodde det var enkelt och slängde in en varialbel så att det blir så här;
//Om fil redan finns.
$filen = $_FILES['userfile']['name'];
elseif( file_exists($target_dir . "/" . $_FILES['userfile']['name'])) {
echo "Det finns redan en fil som heter $filen. Döp om filen och försök igen.
<a href=upload.php>Tillbaka till Public Uploader</a>";
exit();
}
Detta sabbar dock allting. Vad gör jag för fel?
March 27, 2003
Jag har testat med båda. (alltså både att använda den gamla $file_name och att skapa en ny)
I båda fallen slutar scriptet helt att fungera. Inga filer laddas upp och inga felmeddelanden visas. Sidan blir bara vit när man trycker på Upload.
???
EDIT: Löste sig på nått vis. Fråga inte hur.
En annan fråga:
Följande kod tycker jag är väldigt fin:
//Filstorleken...
$max_file_size = "10485760";
$file_size = $_FILES['userfile']['size'];
if ($size_size > $max_file_size) {
echo "Filen är för stor. Storleken är begränsad till 10 MB.
<a href=upload.php>Tillbaka till Public Uploader</a>";
exit();
}
Men den funkar inte. Laddar man upp en fil som är större än 10 MB så visas samma felmeddelande som om man inte angett någon fil tryckt "Upload".
Med andra ord det felmeddelande som genereras av föjande kod:
//Ingen fil har angetts...
if (!is_uploaded_file($_FILES['userfile']['tmp_name'])) {
echo "[/b]Ingen fil har angetts[/b]. Gå tillbaka och försök igen.
<a href=upload.php>Tillbaka till Public Uploader</a>";
exit();
}
Nått måste vara fel, men vad?
January 26, 2003
jag kan så gott som inget php, men det kanske ska vara en 'else' efter din 'if'
typ såhär
//Filstorleken...
$max_file_size = "10485760";
$file_size = $_FILES['userfile']['size'];
if ($size_size > $max_file_size) {
echo "Filen är för stor. Storleken är begränsad till 10 MB.
} else {
fortsätt med uppladdningen (vetifan hur man ska skriva detta)
Tillbaka till Public Uploader";
exit();
}
nu chansar jag hejvilt då jag kan så gott som inget, men det är ju alltid värt ett försök 🙂
edit: flyttade en klammer
January 26, 2003
gäller bara att veta hur man ska skriva 🙂
du kan ju testa något annat forum, ett som är inriktat på php
typ http://www.phpportalen.net
edit: ett fel
2 Guest(s)