Avatar billede mikze Nybegynder
08. august 2005 - 15:31 Der er 8 kommentarer og
1 løsning

Tjek om fil eksisterer

Hej.

Med mit upload script skal den tjekke om den valgte fil eksisterer. Jeg har prøvet med file_exists($_FILES["billede"]["tmp_name"], men den returner hele tiden true fordi at TMP'en eksisterer, men der bare ikke er noget billede.

Det skal fungerer sådan at man ikke kan pege på et billede med gennemse, og så bagefter slette billedet på computeren(eller ændrer på billedets navn i billede-feltet.
Avatar billede jaw Nybegynder
08. august 2005 - 15:55 #1
Du kan med PHP ikke tjekke, om brugeren har filen liggende lokalt på sin computer, hvis det er det du mener? Hvis du vil tjekke, om billedet allerede ligger på din server, så er det ikke tmp-navnet du skal bruge, men navnet: $_FILES['billede']['name'].

Ellers må du lige prøve med en bedre beskrivelse af dit problem :)
Avatar billede mikze Nybegynder
08. august 2005 - 16:21 #2
Ok

Jeg har et fil-felt:
<input type="file" name="minfil">


Der kommer denne:
_____________________  ___________
|____________________| |_Gennemse_|

En upload boks. Når der bliver trykket på Gennemse... så kan brugeren vælge en fil. Hvis han vælger en ZIP fil eller noget som IKKE er jpg eller gif, så melder den fejl(virker), og hvis filden fylder for meget melder den fejl som også virker.

Men, hvis brugeren nu har valgt et billede, så står der i den første boks på figuren ovenover fx:

C:\Documents and settings\HC Andersen\Skrivebord\billede.jpg

Hvis nu at han så går ind på sin PC og sletter billede.jpg som ligger på skrivebordet, eller bare går ind og ændrer teksten til:

C:\Documents and settings\HC Andersen\Skrivebord\billede2.jpg (som ikke eksisterer)

Så vil den melde en masse fejl med at den ikke kan finde et billede og alt muligt.

Det vil jeg undgå. Så jeg har prøvet at lave:

if(!file_exists($_FILES["billede"]["tmp_name"])) {
  echo "Filen eksisterer ikke!";
  exit;
}

Det virker bare ikke, og jeg regner med at det er fordi at billedet bliver uploadet i TMP mappen, men at der bare ikke er noget billede i filen. Hvis du forstår.

Håber det var en bedre forklaring :-)
Avatar billede fixxxer Nybegynder
08. august 2005 - 16:30 #3
Hvis du forsøger at uploade et billede til server der ikke findes lokalt, så skulle PHP meget gerne selv brokke sig, eller i hvert fald skulle du kunne kontrollere på move_uploaded_file() om filen med success er blevet sendt til serveren.. du kan IKKE skrive en kontrol client-side !-)
Avatar billede mikze Nybegynder
08. august 2005 - 16:42 #4
Bruger ikke move_uploaded_file.. bruger imagejpg (hvilket meget gerne skulle være GD)
Avatar billede mikze Nybegynder
08. august 2005 - 16:44 #5
og det bliver kørt gennem en funktion, men måske kan jeg lave en

if($im = imagecreatefromjpg($fil)) {
  return(false);
}

og så på min forside lave:

if(billede_funktion($_FILES parameter og lala)) {
echo "dit billede blev uploadet";
}
else {
echo "der opstod en fejl";
}
Avatar billede jaw Nybegynder
08. august 2005 - 16:50 #6
Det lyder meget rimeligt, men jeg har ikke helt indblik nok i GD til at fortælle om det virker - men tror det burde. Prøv det :)

Og som fixxer siger, så kan du ikke med PHP tjekke noget lokalt hos brugeren, da php kører server-side.
Avatar billede olebole Juniormester
08. august 2005 - 18:06 #7
<ole>

Hvis du skal tage højde for, at brugeren vælger en fil - sletter den - og efterfølgende prøver at uploade den ... så kan jeg da lynhurtigt komme i tanker om 2-300 andre ting, du også bør tage højde for.

Umiddelbart kunne jeg da forestille mig, det er mere sandsynligt, at brugeren koger suppe på sin nyindkøbte kattekilling og hælder suppen i keyboardet - sætter sin monitor i mikrobølgeovnen - og efterfølgende ikke forstår, han ikke kan uploade billedet  :D

/mvh
</bole>
Avatar billede mikze Nybegynder
08. august 2005 - 20:18 #8
:)
Avatar billede mikze Nybegynder
15. august 2005 - 15:20 #9
 
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