Avatar billede cozey Nybegynder
27. april 2009 - 17:32 Der er 19 kommentarer og
1 løsning

ændre navn på billede i billedeupload?

Hej.
Jeg har en billeduploadfunktion, som på nuværende tidpunkt beholder det oprindelige navn på billedet når den smider det op i mappen, men jeg vil gerne have den til at omdøbe billedet til $brugernavn, som hives ud fra min database. Koden er som følger:
--------------------------------------------------------------
<?php $Submit = $_REQUEST["Submit"]; ?>
<form name="form" method="post" action="bilupload.php?cid=<?php print "$cid"; ?>" enctype="multipart/form-data">
<input type="hidden" name="cid" value="<?php print "$cid"; ?>">
<input type="file" name="imagefile">
<input type="submit" name="Submit" value="Submit">
<?
if(isset( $Submit ))
{
if ($_FILES['imagefile']['type'] == "image/pjpeg"){
    copy ($_FILES['imagefile']['tmp_name'], "vinbil/".$_FILES['imagefile']['name'])
or die ("oh crap! not copied");
echo "Billedet er tilføjet";
}
else {
echo "Filen er ikke kopieret, forkert Filtype (".$_FILES['imagefile']['name'].")";
}
}
?>
</form>



-Der er i forvejen forbundet til databasen, hvor $brugernavn hives ud fra.

På forhånd tak.

/Daniel
Avatar billede webweaver Praktikant
27. april 2009 - 18:23 #1
Prøv,

$uploadedPic = $_FILES['imagefile']['name'];
$split = explode(".", $uploadedPic);
$newName = $brugernavn . "." . $split[1];

<?php $Submit = $_REQUEST["Submit"]; ?>
<form name="form" method="post" action="bilupload.php?cid=<?php print "$cid"; ?>" enctype="multipart/form-data">
<input type="hidden" name="cid" value="<?php print "$cid"; ?>">
<input type="file" name="imagefile">
<input type="submit" name="Submit" value="Submit">
<?
if(isset( $Submit ))
{
if ($_FILES['imagefile']['type'] == "image/pjpeg"){
    copy ($_FILES['imagefile']['tmp_name'], "vinbil/".$newName)
or die ("oh crap! not copied");
echo "Billedet er tilføjet";
}
else {
echo "Filen er ikke kopieret, forkert Filtype (".$_FILES['imagefile']['name'].")";
}
}
?>
</form>

Sådan som jeg har lavet det der, betyder så at der ikke må være punktum i dine filnavne udover .jpg og så videre.... mit.billede.jpg er ikke tilladt. Så vil det ikke virke. Men det vidst heller ikke særlig tit at det sker. Og hvis endelig at det er et problem, er det meget let at løse :)
Avatar billede cozey Nybegynder
27. april 2009 - 18:47 #2
Det virker helt super!... har dog lige et par tillægsspørgsmål som jeg håber du også har mulighed for at hjælpe med.

Det skulle helst være sådan at jeg kan uploade to billeder, hvor det første hedder $brugernavn_01 og det andet hedder $brugernavn_02 ... kan jeg bare tilføje 01 og 02 bagefter? Og kan jeg bare kopiere koden så den står to gange og så bare en en submitknap eller skal det laves på en anden måde?
takker...
Avatar billede webweaver Praktikant
27. april 2009 - 19:01 #3
Du kan godt bare tilføje 01 og 02 bagefter ja. Det vil sige at det selfølgelig ikke skal være efter .jpg, men før. Så således,

$newName = $brugernavn . "01." . $split[1];
$newName2 = $brugernavn . "02." . $split[1];

Og ja du smider bare den samme kode ind igen. Altså kode-delen som indeholder copy .... og så retter du den til, så den hedder Newname2 og din inputfelt skal hedde noget andet, så de ikke hedder det samme. Så skulle det køre fint :)
Avatar billede cozey Nybegynder
27. april 2009 - 19:18 #4
Skal der ikke rettes noget her:
$uploadedPic = $_FILES['imagefile']['name'];
$split = explode(".", $uploadedPic);

hvis nu jeg kalder den anden for imagefile2 skal det så være sådan:

Skal der ikke rettes noget her:
$uploadedPic = $_FILES['imagefile']['name'];
$uploadedPic = $_FILES['imagefile2']['name'];
$split = explode(".", $uploadedPic);

eller...? Er lidt i tvivl...
Avatar billede cozey Nybegynder
27. april 2009 - 19:21 #5
jeg har lige prøet lidt forskelligt uden held, kan jeg overtale dig til at poste hele koden?

Takker.
Avatar billede webweaver Praktikant
27. april 2009 - 19:49 #6
Jo det skal også ændres. Der skal være en for hvert billede.
Har lige lavet koden som den skal være.

<?php $Submit = $_REQUEST["Submit"]; ?>
<form name="form" method="post" action="bilupload.php?cid=<?php print "$cid"; ?>" enctype="multipart/form-data">
<input type="hidden" name="cid" value="<?php print "$cid"; ?>">
<input type="file" name="imagefile">
<input type="file" name="imagefile2">
<input type="submit" name="Submit" value="Submit">

<?
$uploadedPic = $_FILES['imagefile']['name'];
$split = explode(".", $uploadedPic);
$newName = $brugernavn . "_01." . $split[1];

$uploadedPic2 = $_FILES['imagefile2']['name'];
$split2 = explode(".", $uploadedPic2);
$newName2 = $brugernavn . "_02." . $split2[1]; 

if(isset( $Submit ))
{
if ($_FILES['imagefile']['type'] AND $_FILES['imagefile2']['type'] == "image/pjpeg"){
    copy ($_FILES['imagefile']['tmp_name'], "vinbil/".$newName)
    copy ($_FILES['imagefile2']['tmp_name'], "vinbil/".$newName2)
or die ("oh crap! not copied");
echo "Billedet er tilføjet";
}
else {
echo "Filen er ikke kopieret, forkert Filtype (".$_FILES['imagefile']['name'].")";
}
}
?>
</form>
Avatar billede webweaver Praktikant
27. april 2009 - 19:52 #7
Lige en lille fejl,

Denne linie,

if ($_FILES['imagefile']['type'] AND $_FILES['imagefile2']['type'] == "image/pjpeg"){

skal forresten lige ændres til,

if ($_FILES['imagefile']['type'] == "image/pjpeg" AND $_FILES['imagefile2']['type'] == "image/pjpeg"){
Avatar billede cozey Nybegynder
27. april 2009 - 19:58 #8
Nu giver den en parsefejl:
Parse error: syntax error, unexpected T_STRING in /admin/bilupload.php on line 63
Avatar billede cozey Nybegynder
27. april 2009 - 20:01 #9
der skal vel et ; ind her:

if ($_FILES['imagefile']['type'] == "image/pjpeg" AND $_FILES['imagefile2']['type'] == "image/pjpeg"){
    copy ($_FILES['imagefile']['tmp_name'], "vinbil/".$newName)
    copy ($_FILES['imagefile2']['tmp_name'], "vinbil/".$newName2)
or die ("oh crap! not copied");
echo "Billedet er tilføjet";

efter:
copy ($_FILES['imagefile']['tmp_name'], "vinbil/".$newName)(HER?)

Eller hvad?
Avatar billede cozey Nybegynder
27. april 2009 - 20:02 #10
Det virker ihvertfald nu... tusind tak for hjælpen!
Avatar billede webweaver Praktikant
27. april 2009 - 20:11 #11
Jo det er rigtigt, en lille tastefejl der. Men nok snarere en or die på, så du har fejl-check begge steder.

copy ($_FILES['imagefile']['tmp_name'], "vinbil/".$newName) or die ("oh crap! not copied");

copy ($_FILES['imagefile2']['tmp_name'], "vinbil/".$newName2) or die ("oh crap! not copied");

Når du nu har på den ene. Kan du lige så godt have det på begge :)

Godt at du kunne bruge hjælpen. Fortsat god dag. :)
Avatar billede Slettet bruger
27. april 2009 - 22:04 #12
$uploadedPic = $_FILES['imagefile']['type'];
############################################
$split = explode("/", $uploadedPic);
############################################
$newName = $brugernavn . "_01." . $split[1];
Avatar billede webweaver Praktikant
28. april 2009 - 17:44 #13
Hvorfor poster du det der?
$split = explode("/", $uploadedPic); vil ikk give .jpg, .gif og såvidere for sig selv som er påkrævet.
Avatar billede Slettet bruger
28. april 2009 - 20:18 #14
det ville det jo netop $_FILES['imagefile']['type'];

image type på et jpg billede ville give: image/jpg eller image/jpeg
så at explode image type ville være helt rigtigt.. og så kommer der ikke fejl i skriptet hvis billedet hedder dasdsad.asdas.jpeg vel..

desuden ville det ikke være næmmere at loope igennem de billeder der skal uploades i stedet for at definere i php hvor mange filer man kan uploade


if ($_FILES['imagefile']['type'] == "image/pjpeg" AND $_FILES['imagefile2']['type'] == "image/pjpeg"){
    copy ($_FILES['imagefile']['tmp_name'], "vinbil/".$newName)
    copy ($_FILES['imagefile2']['tmp_name'], "vinbil/".$newName2)
or die ("oh crap! not copied");
echo "Billedet er tilføjet";


og hvad med at udvide php eget hukommelse hvis man nu har brug for at uploade store billeder når php nu engang kun har 8 mb til at starte med...

hvad med at lave nogle thumbs af billederne ville det ikke være en ide eller ville det også være forkert ??
Avatar billede Slettet bruger
28. april 2009 - 20:27 #15
det er ikke image type men file type en lille glipper der
Avatar billede webweaver Praktikant
28. april 2009 - 21:46 #16
<b>og hvad med at udvide php eget hukommelse hvis man nu har brug for at uploade store billeder når php nu engang kun har 8 mb til at starte med...

hvad med at lave nogle thumbs af billederne ville det ikke være en ide eller ville det også være forkert ??</b>

Ja det ville være forkert! Forkert at begynde at vrøvle omkring ihverfald.
Det har intet med topic at gøre. Der er allerede blevet besvaret på spørgsmålet og det er accepteret. Ergo laves der ikke alt muligt udover det, og ergo er tråden er lukket!

Yd support på de åbne tråde tak ... :)
Avatar billede Slettet bruger
28. april 2009 - 22:10 #17
Ja det ville være forkert! Forkert at begynde at vrøvle omkring ihverfald.

lol det er da dig der vrøvler jeg og jeg ser ikke at tråden er lukket nogen steder, men det er ikke der for jeg skriver, jeg skriver nemlig for at hjælpe når nu den hjælp du gav var halv færdig.. og igen var det det eneste punkt du kunne citere eller forstod du ikke store ord som loope eller thumbs, hvis ikke vil jeg med glæde hjælpe dig
Avatar billede webweaver Praktikant
28. april 2009 - 22:44 #18
Thumbs? Tråden omhandler omdøbning af filnavn.
Hvad er det du ikke forstår.

Derfor omtaler jeg ikke thumbs! Og det er da kun fint at du vil hjælpe :) Bare hold dig til topic.

Vi 2 snakker om explode(); Så hold den der. I stedet for at blande flere irrelevante ting ind, som overhovedet ikke har noget at gøre med tråden.

Men der er ikke så meget mere at komme efter her.
Det virker for spørgeren, og det er jo det som det handler om :)
Avatar billede Slettet bruger
28. april 2009 - 22:52 #19
så burde du nok ikke have postet det her

Hvorfor poster du det der?
$split = explode("/", $uploadedPic); vil ikk give .jpg, .gif og såvidere for sig selv som er påkrævet.

især når det er den bedste og mest korrekte løsning
Avatar billede webweaver Praktikant
28. april 2009 - 23:04 #20
Jeg havde ikke set du havde postet $_FILES['imagefile']['type'];
My bad. Sorry ...
Det vil nemlig ikke virke med $_FILES['imagefile']['name']; som jeg skrev. Som jeg også skrev i første indlæg allerede, så var det let at løse med punktum hvis det skulle blive aktuelt.

Det er den smarteste løsning. Men der er ikke en korrekt metode.
Vi bruger explode nøjagtig ens og begge virker :)
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

IT-JOB