Avatar billede mrblues Nybegynder
06. oktober 2006 - 12:31 Der er 10 kommentarer

upload spørgsmål

Hej er der en måde at få det her script til ikke at overskrive et billede på serveren hvis det har samme navn som det man uploader, jeg mener hvis der allerede ligger et billede kaldet "bil" i mappen photo på serveren og jeg uploader et andet billede også kaldet "bil" til mappen.

Hvis ikke kan man så så lave en funktion "tilføjelse i script" der fortæller uploader at der allerede er et billede på serveren med det navn.

Takker for hjælpen...

upload script

<html>
<head>
<title>Upload File To MySQL Database</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
<!--
.box {
font-family: Arial, Helvetica, sans-serif;
font-size: 12px;
border: 1px solid #000000;
}
-->
</style>
</head>

<body>
<?
// you can change this to any directory you want
// as long as php can write to it
$uploadDir = '../photo/';


if(isset($_POST['upload']))
{
$fileName = $_FILES['userfile']['name'];
$tmpName = $_FILES['userfile']['tmp_name'];
$fileSize = $_FILES['userfile']['size'];
$fileType = $_FILES['userfile']['type'];

// the files will be saved in filePath
$filePath = $uploadDir . $fileName;

// move the files to the specified directory
// if the upload directory is not writable or
// something else went wrong $result will be false
$result = move_uploaded_file($tmpName, $filePath);
if (!$result) {
echo "Error uploading file";
exit;
}

include 'library/config.php';
include 'library/opendb.php';

if(!get_magic_quotes_gpc())
{
$fileName = addslashes($fileName);
$filePath = addslashes($filePath);
}

$query = "INSERT INTO upload2 (name, size, type, path ) ".
"VALUES ('$fileName', '$fileSize', '$fileType', '$filePath')";

mysql_query($query) or die('Error, query failed : ' . mysql_error());

include 'library/closedb.php';

echo "<br>File uploaded<br>";
}
?>
<form action="" method="post" enctype="multipart/form-data" name="uploadform">
<table width="350" border="0" cellpadding="1" cellspacing="1" class="box">
<tr>
<td width="246"><input type="hidden" name="MAX_FILE_SIZE" value="2000000"><input name="userfile" type="file" class="box" id="userfile">
</td>
<td width="80"><input name="upload" type="submit" class="box" id="upload" value=" Upload "></td>
</tr>
</table>
</form>
</body>
</html>
Avatar billede jaw Nybegynder
06. oktober 2006 - 12:50 #1
Du kan noget a'la:

if(file_exist(-filnavn-)) {
  unlink(-filnavn'); // sletter den allerede-eksisterende fil!
  echo "Filen eksisterer"; //udksriver meddelelse til brugeren
}
Avatar billede radion Nybegynder
06. oktober 2006 - 12:53 #2
jeg plejer at omdøbe mine filer undervejs, så
bil.jpg

kommer til at hedde
bil_1dsf4.jpg

for eksempel

normalt indsætter jeg

substr(md5(rand()),0,5)

mellem filens for og efternavn.
Avatar billede jaw Nybegynder
06. oktober 2006 - 12:54 #3
Så burde der vel heller ikke være 2 med samme navn? Men ellers, må du jo lave checket inden du omdøber den.
Avatar billede jaw Nybegynder
06. oktober 2006 - 12:55 #4
Oh sorry, så ikke lige du ikke var spørger, radion :) - Så bare se bort fra mit sidste indlæg...
Avatar billede mrblues Nybegynder
06. oktober 2006 - 13:53 #5
Hvis jeg vil tjekke om filen allerede eksisterer på serveren inden upload hvordan gør jeg det og hvor skal jeg indsætte koden i scriptet "jeg er mega nybegynder"
Avatar billede mccookie Seniormester
06. oktober 2006 - 14:08 #6
Når jeg laver noget med upload giver jeg altid filen en unik værdi med uniqid

http://dk2.php.net/manual/da/function.uniqid.php

Så er muligheden for ens filnavne i hvertilfælde minimeret ;)

God weekend
McCookie

P.S. Til at vise indholdet i din mappe kunne du evt. kigge på glob() :) nem at arbejde med.
Avatar billede jaw Nybegynder
06. oktober 2006 - 20:39 #7
Som min første kommentar:

Slet-fil-metoden:
if(file_exists($filePath)) {
  unlink($filePath); //her vil filen blive slettet
}
$result = move_uploaded_file($tmpName, $filePath);

Advar-brugeren-metoden:
if(file_exists($filePath)) {
  unlink($filePath); //her vil filen blive slettet
} else {
  $result = move_uploaded_file($tmpName, $filePath);
}
Avatar billede jaw Nybegynder
06. oktober 2006 - 20:40 #8
Hovsa, advar-brugeren-metoden:
if(file_exists($filePath)) {
  echo "Filen eksisterer allerede !!!
} else {
  $result = move_uploaded_file($tmpName, $filePath);
}
Avatar billede mrblues Nybegynder
06. oktober 2006 - 23:41 #9
Super tak for hjælpen
Avatar billede jaw Nybegynder
07. oktober 2006 - 00:20 #10
Går så ud fra, at det virkede efter hensigten?

Og selv tak...
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