Avatar billede vind Nybegynder
05. februar 2003 - 17:35 Der er 30 kommentarer og
4 løsninger

Upload en fil via PHP

Hej Eksperter.
Jeg er MEGET nybegynder inden for PHP, men jeg har dog prøvet en smule med besvær... :)
Jeg har en lille hjemmeside med nogle venner, hvor jeg gerne vil have mulighed for at vi kan lægge nogle få word-dokumenter op på en side, hvor vi så alle kan downloade filerne. Jeg er dog den eneste "computer-nørd" - de andre kan kun finde ud af at tænde for deres computer... :)
Det jeg søger er, et upload-script i PHP - altså et meget enkelt et, hvor man bare skal kunne uploade et sted, og på en anden side se og downloade de uploade filer.
Er det muligt at finde et sådan script?

Mvh. Vind
Avatar billede Slettet bruger
05. februar 2003 - 17:36 #1
du skulle ta' at prøve søgemaskinen..
Avatar billede schaefner Juniormester
05. februar 2003 - 17:37 #2
Avatar billede schaefner Juniormester
05. februar 2003 - 17:37 #3
der har du upload-scriptet
Avatar billede schaefner Juniormester
05. februar 2003 - 17:39 #4
og hvis du kigger på dette spm., kan du se hvordan du lister alle filer i en mappe: http://www.eksperten.dk/spm/309157
Avatar billede jakoba Nybegynder
05. februar 2003 - 17:42 #5
Word er ikke et godt format at distribuere data med. Der har været en del Word-virusser der misbruger Makro-funktionen i word, så der er mange der ikke tør hente dem.
Avatar billede vind Nybegynder
05. februar 2003 - 17:58 #6
Jeg takker meget for alle svarene - perfekt, men er dog stadig lidt lost... :)
I denne php-fil:

<html><head><title>Upload resultat</title>
<link rel="stylesheet" type="text/css" href="upload.css">
</head>
<body>
<p>
<center>
<table><tr>
<td><?php

if (isset($_FILES['upfile'])) {

//til brug for info om filtyper
$str1 = $_FILES['upfile']['name'];
$str2 = $_FILES['upfile']['size'];
$str3 = $_FILES['upfile']['type'];

//Filer som kan uploades
$filetyper = array("image/gif", "text/txt", "text/doc", "image/jpeg", "image/pjpeg", "image/png");

//stien, hvortil filerne skal placeres   
$dist = "upload";

//Tjek om der er en fil, samt om den overholder filtypen som kan uploades
    if (isset($_FILES['upfile']['name']) && $_FILES['upfile']['name'] == "") {
echo"Ingen fil valgt! <a href=\"$_SERVER[HTTP_REFERER]\">tilbage</a></td>\n";
echo"</tr></table>\n";
echo"</center>\n";
echo"</body></html>";
exit;

}elseif (!in_array($_FILES['upfile']['type'], $filetyper)) {
echo "Filen kan ikke uploades.<br>\n<b>$str3</b> er ikke tilladt for upload! <a href=\"$_SERVER[HTTP_REFERER]\">tilbage</a></td>\n";
echo"</tr></table>\n";
echo"</center>\n";
echo"</body></html>";
exit;
    }

echo"&Oslash;nsket fil til upload:<p>\n";

    if (isset($_FILES['upfile']['name']) && $_FILES['upfile']['name'] !="") {

//se http://dk.php.net/manual/en/function.is-uploaded-file.php for "is_uploaded_file"       
        if(is_uploaded_file($_FILES['upfile']['tmp_name'])) {

//Flyt filen fra upload-tmp til et dir. Husk at ændre "$dist" ovenover så det passer med din server :O)
move_uploaded_file($_FILES['upfile']['tmp_name'], $dist . $_FILES['upfile']['name']);
        }else{
        echo"Sorry, men upload skete IKKE!";
    }


echo "<b>Navn:</b> $str1, <b>st&oslash;rrelse:</b> $str2 bytes, <b>filtype:</b> $str3<br>\n";
echo"</p>";
    }
}else{

echo "Du skal v&aelig;lge en fil til upload. <a href=\"singleupload.html\">singleupload.html</a>";
}
?></td>

</tr></table>

</center>

</body></html>

Hvordan ændrer jeg det, sådan at den kan uploade doc-filer og txt-filer?
Og - i stien, hvortil filerne skal placeres - har jeg bare skrevet "upload", for det hedder mappen, hvori de skal gemmes. Jeg gør et eller andet meget forkert, men hvad???

/Vind
Avatar billede schaefner Juniormester
05. februar 2003 - 18:04 #7
Det kan du også nu. Prøv at kig på denne linje:
$filetyper = array("image/gif", "text/txt", "text/doc", "image/jpeg", "image/pjpeg", "image/png");
Avatar billede vind Nybegynder
05. februar 2003 - 18:06 #8
det er nemlig noget jeg selv prøvede på, men den vil stadigvæk ikke...
Den siger:
Filen kan ikke uploades.
application/msword er ikke tilladt for upload! 

Hmm...???

/Vind
Avatar billede swaxi Nybegynder
05. februar 2003 - 18:12 #9
ændr linien :
    $filetyper = array("image/gif", "text/txt", "text/doc", "image/jpeg", "image/pjpeg", "image/png");
til
    $filetyper = array("image/gif", "text/txt", "text/doc", "image/jpeg", "image/pjpeg", "image/png", "application/msword");
Avatar billede sukos Juniormester
05. februar 2003 - 18:25 #10
Og så ville jeg bruge:
$dist = $_SERVER['DOCUMENT_ROOT'] ."/upload/";
(Hvis ellers "upload" ligger i "ditdomain.dk/upload")
for helt præcist at definere hvortil filen skal flyttes.
Når du har med filer at gøre, er det altid en go' ting at definere præcis sti til fil som du "bearbejder"
Så vil det også virke på andre servere med en "streng sikkerheds opsætning"
Avatar billede vind Nybegynder
05. februar 2003 - 18:36 #11
hmmm. :)
Nu kommer der så:

Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in /upload/singleupload.php on line 21

Det kører bare det her... :)

/Vind
Avatar billede schaefner Juniormester
05. februar 2003 - 18:38 #12
og linje 21 er?
Avatar billede vind Nybegynder
05. februar 2003 - 18:40 #13
det er der hvor filerne skal placeres:

$dist = $_SERVER['DOCUMENT_ROOT'] ."/upload/";

Jeg har ikke siden på min egen server med eget domain, men hos en gratis udbyder med php mm. Har det nogen betydning?

/Vind
Avatar billede swaxi Nybegynder
05. februar 2003 - 18:50 #14
og linje 20 ... og linje 22 ?
(det ligner en simpel syntaks-fejl ... glemt semikolon eller noget)
Avatar billede vind Nybegynder
05. februar 2003 - 18:51 #15
Dette er rundt om den:

//Filer som kan uploades
$filetyper = array("image/gif", "text/txt", "text/doc", "image/jpeg", "image/pjpeg", "application/msword", "image/png");

//stien, hvortil filerne skal placeres   
$dist = "$_SERVER['DOCUMENT_ROOT'] ."/upload/";

//Tjek om der er en fil, samt om den overholder filtypen som kan uploades
    if (isset($_FILES['upfile']['name']) && $_FILES['upfile']['name'] == "") {

.....

/Vind
Avatar billede schaefner Juniormester
05. februar 2003 - 18:52 #16
har du husket ; i denne linje:
$filetyper = array("image/gif", "text/txt", "text/doc", "image/jpeg", "image/pjpeg", "image/png","application/msword"); ?
Avatar billede swaxi Nybegynder
05. februar 2003 - 18:53 #17
$dist = "$_SERVER
skriv
$dist = $_SERVER
Avatar billede sukos Juniormester
05. februar 2003 - 18:53 #18
$dist = "$_SERVER['DOCUMENT_ROOT'] ."/upload/";
skal være
$dist = $_SERVER['DOCUMENT_ROOT'] ."/upload/";
Avatar billede sukos Juniormester
05. februar 2003 - 18:54 #19
nåh, enighed er der her! :O)
Avatar billede swaxi Nybegynder
05. februar 2003 - 18:54 #20
:)
Avatar billede vind Nybegynder
05. februar 2003 - 18:58 #21
Ahhhhgggg!%&¤" :-)
Nu skriver den så:

Ønsket fil til upload:

Warning: Unable to create '/var/www/hotels/1go//upload/dps-essay.doc': No such file or directory in /var/www/hotels/1go/taulov1999a/html/laerernettet/upload/singleupload.php on line 47

Warning: Unable to move '/tmp/phpky1WOf' to '/var/www/hotels/1go//upload/dps-essay.doc' in /var/www/hotels/1go/taulov1999a/html/laerernettet/upload/singleupload.php on line 47
Navn: dps-essay.doc, størrelse: 25088 bytes, filtype: application/msword

Hvad mon jeg gør galt?

/Vind
Avatar billede swaxi Nybegynder
05. februar 2003 - 19:00 #22
skriv :
$dist = $_SERVER['DOCUMENT_ROOT'] ."upload/";
Avatar billede vind Nybegynder
05. februar 2003 - 19:02 #23
Det har jeg gjort og den siger stadig det samme som i indlægget herover!!

/Vind
Avatar billede swaxi Nybegynder
05. februar 2003 - 19:06 #24
umuligt ... den må sige noget med :
Warning: Unable to create '/var/www/hotels/1go/upload/dps-essay.doc': No such file or directory in /var/www/hotels/1go/taulov1999a/html/laerernettet/upload/singleupload.php on line 47



anyways .... har du skriverettigheder til /var/www/hotels/1go/upload/ ?
Avatar billede vind Nybegynder
05. februar 2003 - 19:15 #25
Jep, dette siger den:

Ønsket fil til upload:

Warning: Unable to create '/var/www/hotels/1go/upload/dps-essay.doc': No such file or directory in /var/www/hotels/1go/taulov1999a/html/laerernettet/upload/singleupload.php on line 47

Warning: Unable to move '/tmp/phpoJU4Ui' to '/var/www/hotels/1go/upload/dps-essay.doc' in /var/www/hotels/1go/taulov1999a/html/laerernettet/upload/singleupload.php on line 47
Navn: dps-essay.doc, størrelse: 25088 bytes, filtype: application/msword

Ja, jeg har flere ting på de mapper...
Undskyld hvis jeg lyder meget amatør-agtig, men jeg er altså meget amatør-agtig... :)

/Vind
Avatar billede swaxi Nybegynder
05. februar 2003 - 19:29 #26
findes biblioteket /var/www/hotels/1go/upload/ ?
Avatar billede thedarkrider Nybegynder
05. februar 2003 - 19:34 #27
Det ser ud som om du er godt igang. Men det kan være du kan bruge denne side til noget:
http://robouk.mchost.com/tuts/tutorial.php?tutorial=fileupload
Avatar billede vind Nybegynder
05. februar 2003 - 20:03 #28
Nej, biblioteket /var/www/hotels/1go/upload/ findes ikke, men det gør /var/www/hotels/1go/taulov1999a/html/laerernettet/upload/ som den også skriver i scriptet...

/Vind
Avatar billede swaxi Nybegynder
06. februar 2003 - 03:10 #29
det den skriver ved afvikling af scriptet er (oversat til dansk) :

Under afvikling af programmet 'singleupload.php' (der ligger i biblioteket '/var/www/hotels/1go/taulov1999a/html/laerernettet/upload/') opstod der et problem på linje 47. Problemet er at jeg ikke kan oprette en fil kaldet 'dps-essay.doc' i biblioteket '/var/www/hotels/1go/upload/'.


ergo ... ret følgende :
    $dist = "upload";
rettes til :
    $dist = "taulov1999a/html/laerernettet/upload";
Avatar billede vind Nybegynder
06. februar 2003 - 16:37 #30
ok, nu skriver den så:

Ønsket fil til upload:

Warning: Unable to create '/var/www/hotels/1go/taulov1999a/html/laerernettet/upload/dps-essay.doc': Permission denied in /var/www/hotels/1go/taulov1999a/html/laerernettet/upload/singleupload.php on line 47

Warning: Unable to move '/tmp/phpxBhd8h' to '/var/www/hotels/1go/taulov1999a/html/laerernettet/upload/dps-essay.doc' in /var/www/hotels/1go/taulov1999a/html/laerernettet/upload/singleupload.php on line 47
Navn: dps-essay.doc, størrelse: 25088 bytes, filtype: application/msword

Et nyt problem... :) Men kan den da finde mapperne...!

/Vind
Avatar billede dhunters Nybegynder
06. februar 2003 - 23:09 #31
Goddag goddag... Vind -> Har du overhovedet givet tilladelse til at uploade til mapperne? Du skal jo huske at ændre chmod til 666 eller 777.

/dhunters
Avatar billede vind Nybegynder
13. februar 2003 - 12:51 #32
Jeg har fundet en anden løsning - men ellers mange tak fordi I har brugt så meget tid på at hjælpe mig - den umulige "php-koder"... :)

/Vind
Avatar billede the_zyx Nybegynder
11. juni 2003 - 17:19 #33
virker det ikke nu? hvis man bare Chmoder?
Avatar billede fixbabe Nybegynder
26. oktober 2005 - 10:29 #34
westhi - hva fa** er det for at svar at komme med? hvis du ikke har noget bedre at komme med så skal du ikke kommentere eller svare på et indlæg, god nok det mest barnlige jeg længe har set.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester