04. november 2004 - 00:05
Der er
3 kommentarer og
1 løsning
renaming af fil under upload + verificering at det er et billede
Hey,
jeg har c/p'ed det her script og skal til at tilpasse det min side.
Men jeg har lidt problemer ting jeg gerne vil ha tilføjet/ændret:
1. Jeg vil gerne ha tjekket om det er et billede.
2. Jeg vil gerne ha filen renamet. (havde selv tænkt på at bruge mktime() men hvis der er noget bedre så bar sig til.
3. navnet fra filen skal også bruges senere til indsættelse i en mySQL db så det skal nok kaldes i en variabel først.
og til sidst 4. Filen skal uploades til en mappe der ligger tættere på roden end den mappe side1/2 ligger i.
Her har i den del af sciptet der har noget med billedet at gøre:
side1:
echo '<form method="post" action="side2" enctype="multipart/form-data">
<input name="TheFile" type="file">
<input type="submit" name="Submit">
</form>';
side2:
<?php
$File_path = " en mappe tætter på roden end side1/2";
if ($_POST['Submit'] != "") {
$File_name = $_FILES['TheFile']['name'];
$File = $_FILES['TheFile']['tmp_name'];
if (!(file_exists("$File_path$File_name"))) {
$FileCopyWorked = @copy("$File", "$File_path$File_name");
}
if ($FileCopyWorked) {
echo "fæææææææærdiiiiiiiig";
}
else
{
echo "noget gik galt";
}
}
?>
04. november 2004 - 06:29
#1
Prøv denne:
<?php
/* Funktion der uploader en fil af tilladt filtype (MIME) med en maximal størrelse til et bibliotek */
/* Funktionen skal fodres med $_FILES['navn'] */
/* String upload_fil(Array fil [, Integer max_stoerrelse [, String bibliotek [, Array filtyper_tilladt]]]) */
function upload_fil($fil, $max_stoerrelse = 100, $bibliotek = 'default', $filtyper_tilladt = 'default')
{
if ($bibliotek == 'default') {
$bibliotek = '/upload';
}
if ($filtyper_tilladt == 'default') {
$filtyper_tilladt = array('image/bmp', 'image/jpeg', 'image/pjpeg', 'image/tiff', 'image/png', 'image/gif', 'application/pdf', 'application/zip', 'application/arj', 'application/x-zip-compressed', 'application/octet-stream');
}
if ($fil['size'] > 0) {
$filnavn = strtolower(ereg_replace(' ', '_', $fil['name']));
$fil_sti = $bibliotek . '/' . $filnavn;
$fra = $fil['tmp_name'];
$fil_stoerrelse = filesize($fra)/1024;
$filtype = $fil['type'];
$fejl = 0;
if (!in_array($filtype, $filtyper_tilladt)) {
echo "<p>Filtypen '$filtype' er ikke tilladt. De tilladte filtyper er '" . implode("', '", $filtyper_tilladt) . "'. Filen '$filnavn' kan derfor ikke uploades!</p>";
$fejl = 1;
}
if ($fil_stoerrelse > $max_stoerrelse) {
echo "<p>Filen '$filnavn' er for stor og kan ikke uploades. Den fylder " . ceil($fil_stoerrelse) . " kb og der kan maximalt uploades $max_stoerrelse kb!</p>";
$fejl = 1;
}
if ($fejl == 0) {
if (file_exists($_SERVER['DOCUMENT_ROOT'] . $fil_sti)) {
$pos = strrpos($filnavn, '.');
$foerpos = substr($filnavn, 0, $pos);
$efterpos = substr($filnavn, $pos + 1, strlen($filnavn) - ($pos + 1));
$i = 2;
echo "<p>Filen '$filnavn' eksisterer allerede i '$bibliotek' og filen omdøbes derfor til ";
while (file_exists($_SERVER['DOCUMENT_ROOT'] . $fil_sti)) {
$filnavn = $foerpos . '(' . $i . ').' . $efterpos;
$fil_sti = $bibliotek . '/' . $filnavn;
$i++;
}
echo "'$filnavn'</p>";
}
$til = $_SERVER['DOCUMENT_ROOT'] . $fil_sti;
if (move_uploaded_file($fra, $til)) {
echo "<p>Filen '$filnavn' er uploadet!</p>";
return $fil_sti;
} else {
echo "<p>Desværre, filen '$filnavn' kunne ikke uploades!</p>";
return false;
}
}
} else {
echo '<p>Der er ikke vedhæftet nogen fil!</p>';
}
}
04. november 2004 - 15:51
#2
scriptet er sikkert fint nok.. men kan ikk få det til at virke...
1. Fatter ikk hvor hvad det her gør?:
if ($bibliotek == 'default') {
$bibliotek = '/upload';
}
2. Jeg har som sagt ingen viden om php mht. filintegrering så kan du hjælpe med at "fodre med $_FILES['navn']" ?