01. januar 2008 - 15:02Der er
30 kommentarer og 1 løsning
Php: upload fil,opret mappe efter id
Hej phpeksperter.
Jeg har nedenstående script som jeg har fundet på et site. Hvordan udbygger jeg det, så det ligger billedfilen,som jeg uploader,ind i en mappe der er navngivet efter billedets id fra en mysqldatabase. Jeg håber meget i kan hjælpe.
<?php if ($_FILES['minfil']) //Har brugeren forsøgt at uploade noget? { //Bestem hvor filen skal smides hen og og hvad den skal hedde $destination = "Images/" . $_FILES['minfil']['name'];
//Forsøg at flyttede den uploadede fil har dens midlertidige destination til den nye if (move_uploaded_file($_FILES['minfil']['tmp_name'], $destination)) { echo "Filen" . $_FILES['minfil']['name'] . " blevet uploadet"; } else { echo "Der er sket en fejl"; } } ?>
Nej..Jeg har brug for at uploade et billede, assigne billedet et ID fra en mysql database, bruge dette id til at lave en mappe hvor billedet kan ligge i. Jeg kan ikke helt finde ud af hvad der skal gøres først i scriptet.
Filens navn kommer herfra: $destination = "Images/" . $_FILES['minfil']['name']; Så der skal du "bare" indsætte dit DatabaseID og så skal du kigge på funktionen mkdir(), den bruges til at oprette mapper.
Mit problem er sådan set bare, at jeg skal uploade en masse billeder. Uvilkårligt hvad de hedder, skal de omdøbes til et ID. Hvordan får jeg lavet det sådan?
Billedet skal nemlig både uploades og billedets URL skal sættes ind i et databaseindlæg. Er det muligt at omdøbe billedet til database-id'et samt at opkalde mappen billedet ligger i efter id'et?
Ja det er lidt forvirrende, men jeg håber det kan forstås
Er det noget med først at skabe en connection med mysqldatabasen skabe et nyt indlæg, kalde id'et på det nye indlæg frem, og bruge det i navngivningsprocessen af både fil og mappe. Herefter indsætte sti til billedet i db-indlægget?
Indsæt i database. Få id via: mysql_insert_id(); Opret mappe med mkdir() og brug id fra ovenover. Upload billedet til mappen netop oprettet og kald billedet navn med ID.
mysql_query("INSERT INTO images (date) VALUES ('$time()')") OR DIE(mysql_error()); $navn = mysql_insert_id(); mkdir("Images/$navn") $destination = "Images/$navn"; //Husk noget endelse på dit billede
Jeg troede det virkede men den melder blot ud: Der er sket en fejl:
mysql_query("INSERT INTO images (date) VALUES ('$time()')") OR DIE(mysql_error()); $navn = mysql_insert_id(); mkdir("Images/$navn"); $destination = "Images/$navn";
//Forsøg at flyttede den uploadede fil fra dens midlertidige destination til den nye if (move_uploaded_file($_FILES['minfil']['tmp_name'], $destination)) { echo "Filen" . $_FILES['minfil']['name'] . " blevet uploadet"; } else { echo "Der er sket en fejl"; }
Warning: move_uploaded_file() [function.move-uploaded-file]: SAFE MODE Restriction in effect. The script whose uid is 85274 is not allowed to access /web/www/frac/users/j/jimages/Images/24 owned by uid 33 in /web/www/frac/users/j/jimages/upload.php on line 13
Jeg har fundet ud af, at safemode er en fnktion serveren har slået til.. Mht til mit script: Det virker nu mht navngivning af billeder som numre hvilket er helt fint.
Jeg vil gerne være i stand til at loade 3 billeder op på engang. Billederne skal have følgende navn: $id-1.jpg, $id-2.jpg og $id-3.jpg. Hvordan får jeg lavet det i scriptet?
<?php if ($_FILES['minfil']) { mysql_connect("m", "m", "m") or die(mysql_error()); mysql_select_db("jimages") or die(mysql_error()); mysql_query("INSERT INTO images (date) VALUES ('$time()')") OR DIE(mysql_error()); $navn = mysql_insert_id(); $destinationpath = "$navn.jpg"; echo "$destination";
if (move_uploaded_file($_FILES['minfil']['tmp_name'], $destinationpath)) {
<?php if(isset($_POST['upload'])) { mysql_connect("m", "m", "m") or die(mysql_error()); mysql_select_db("jimages") or die(mysql_error()); mysql_query("INSERT INTO images (date) VALUES ('$time()')") OR DIE(mysql_error());
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.