Avatar billede kongknabe Nybegynder
17. september 2009 - 15:38 Der er 25 kommentarer og
1 løsning

Uploade billede fra URL?

Hejsa..

Jeg sidder og forsøger at omskrive et billede upload script til i stedet at tage et billede fra en URL, og kan ikke helt få det til at du...

Scriptet er ret langt så har bare copy pasted de dele ind jeg mener er de væsentlige herunder.. Tænker det må være muligt på en eller anden måde?

if (isset($_FILES['ad_image_1'])){
    $userfile_name = $_FILES['ad_image_1']['name'];
    $userfile_tmp = $_FILES['ad_image_1']['tmp_name'];
    $userfile_size = $_FILES['ad_image_1']['size'];
    $userfile_type = $_FILES['ad_image_1']['type'];
}

---------------------

move_uploaded_file($userfile_tmp, $ad_img);
chmod ($ad_img, octdec($mode));

--------------------

Ja, ovenstående er som sagt de to steder i koden jeg forventer der skal ændres noget, men kan ikke lige finde rundt i det.. I dette tilfælde indeholder variablen ad_image_1 en URL til et billede på nettet :)
Avatar billede repox Seniormester
17. september 2009 - 16:22 #1
file_get_contents() hvis din host tillader det.

Ellers brug curl...
Jeg har lavet en klasse du kan bruge til det her:
http://php.pastebin.com/m59e3d9d7

Om muligt kan du få noget ud af at læse den igennem og måske lave noget selv...
Avatar billede kongknabe Nybegynder
17. september 2009 - 16:27 #2
Hej perox.. Taker for dit link... Forstår umidelbart ikke meget af det men må prøve at lege lidt med det... :)

Har forsøgt mig med file_get_contents() men kan ikke rigtig få det til at virke.. Kører pt. siden lokalt på min maskine, så måske jeg mangler at sætte noget op i PHP?
Avatar billede kongknabe Nybegynder
17. september 2009 - 16:28 #3
(Sorry: Repox)
Avatar billede kongknabe Nybegynder
17. september 2009 - 17:43 #4
Men skal det forstå sådan at jeg kan hente billedet med dit script, og så bare smide mit eget script bagefter stort set som det er?
Avatar billede repox Seniormester
17. september 2009 - 18:49 #5
Det lader ikke til du ved ret meget om PHP eller dets opsætninger; det vil blive lidt omsonst at skulle guide dig igennem at teste om scriptet virker på din opsætning.

Klassen bruges som beskrevet. Du skal instanciere objektet (hvor og hvordan du gør det, må du i princippet selvom, bare det kan passe ind i din kode).

Klassen bruges således:

  //instancier objektet
  $d = new downloader();
  //Navngiv filen som du vil gemme den på disken
  $d->setFilename("billede.png");
  //peg på den fil du vil hente
  $d->get("http://example.org/billede.png");
  //gem den til disken hvor du gerne vil have den
  //dirname(__FILE__) angiver det bibliotek som den PHP fil du er i beligger sig i
  $d->save(dirname(__FILE__));
Avatar billede kongknabe Nybegynder
17. september 2009 - 19:03 #6
Nej, er desværre ikek særlig god til PHP endnu, og er godt klar over jeg er lidt ude på dybt vand.. Men takker igen og vil prøve om jeg kan få dit script til at virke.. :)
Avatar billede kongknabe Nybegynder
17. september 2009 - 20:09 #7
Prøvede lige med dit script nu på følgende måde:

<?php
   
        //Inkluder din klasse
    include('url_upload.php');
   
    //instancier objektet
    $d = new downloader();
    //Navngiv filen som du vil gemme den på disken
    $d->setFilename("billede.gif");
    //peg på den fil du vil hente
    $d->get("http://www.dmi.dk/dmi/dmi-logo.gif");
    //gem den til disken hvor du gerne vil have den
    //dirname(__FILE__) angiver det bibliotek som den PHP fil du er i beligger sig i
    $d->save(dirname('images/'));
?>

Og når jeg kører det får jeg følgende fejl:

Warning: file_put_contents(/Library/WebServer/Documents/kongknabe/Playground/PHP/Upload imeg form URL/cup.png) [function.file-put-contents]: failed to open stream: Permission denied in /Library/WebServer/Documents/kongknabe/Playground/PHP/Upload imeg form URL/url_upload.php on line 41

Warning: file_put_contents(./billede.gif) [function.file-put-contents]: failed to open stream: Permission denied in /Library/WebServer/Documents/kongknabe/Playground/PHP/Upload imeg form URL/url_upload.php on line 41
Avatar billede kongknabe Nybegynder
17. september 2009 - 20:26 #8
Har google lidt og kan se at problemet skulle skyldes manglende skriverettigheder til folderen hvor billedet skal gemmes.. men efter at have givet fuld tilladelse (777) kommer problemet stadig?
Avatar billede repox Seniormester
17. september 2009 - 21:32 #9
er du så sikker på du har givet tilladelserne på den rette mappe? og hvordan har du givet tilladelserne?
Avatar billede kongknabe Nybegynder
17. september 2009 - 21:33 #10
Ja, har givet dem til den mappe jeg forsøger at gemme i (images/) - og har givet dem igennem min editor (Coda, på Mac OS X).
Avatar billede repox Seniormester
17. september 2009 - 21:41 #11
prøv lige
$d->save('images/');
Avatar billede kongknabe Nybegynder
17. september 2009 - 21:43 #12
Hey hey.. Nu lagde den pludselig billedet op hvor det skal være, men den smider stadig følgende fejl:

Warning: file_put_contents(/Library/WebServer/Documents/kongknabe/Playground/PHP/Upload imeg form URL/cup.png) [function.file-put-contents]: failed to open stream: Permission denied in /Library/WebServer/Documents/kongknabe/Playground/PHP/Upload imeg form URL/url_upload.php on line 41
Avatar billede kongknabe Nybegynder
17. september 2009 - 21:47 #13
Ahh - mig der er dum.. Havde lige overset noget kode fra repox's classe der skulle fjernes.. Nu virker det.. Fedt..!

Så mangler jeg bare at sætte $ad_image_1 = ('det billede jeg lige har uploadet')... Og så kan jeg vel bruge mit rezise script som det er derefter?
Avatar billede repox Seniormester
17. september 2009 - 21:49 #14
Jeg har en fornemmelse af at du har taget de sidste fire linier med fra det indlæg jeg lavede på pastebin. Det var bare et eksempel på hvordan du bruger den. Det kan du bare slette.
Avatar billede kongknabe Nybegynder
17. september 2009 - 21:50 #15
Repox.. lige præcis... Nåede selv at opdage det,men takker :)
Avatar billede repox Seniormester
17. september 2009 - 22:00 #16
Ja, så længe du refererer til det billede du har downloadet, så burde du kunne.
Avatar billede kongknabe Nybegynder
17. september 2009 - 22:23 #17
Og hvordan referere jeg til det billede jeg lige har gemt...?

(Ja, jeg er godt klar over jeg spørger lidt meget her.. men er lidt presset :))
Avatar billede kongknabe Nybegynder
17. september 2009 - 22:24 #18
Men samtidig skulle jeg måske få uddelt nogle point.. Det oprindelige spørgsmål er jo besvaret, så du må meget gerne lægge et svar :)
Avatar billede kongknabe Nybegynder
17. september 2009 - 22:57 #19
Og jeg har nu indsnævret problemet til at følgende kode fejler:

$userfile_name = $_FILES['$d']['name'];
$userfile_tmp = $_FILES['$d']['tmp_name'];
$userfile_size = $_FILES['$d']['size'];
$userfile_type = $_FILES['$d']['type'];

Jeg ville tro at jeg kunne bruge $d som reference til filen, men alle ovenstående variabler er tomme?
Avatar billede repox Seniormester
17. september 2009 - 23:12 #20
$_FILES er et super globalt array som referer til en uploaded fil.
Den fil du har fået oprettet på serveren er jo ikke en uploaded fil - derfor er din reference forkert.

Din reference til filen er bare stien til din nye fil.
Avatar billede kongknabe Nybegynder
17. september 2009 - 23:17 #21
Ja ok.. Men hvordan får jeg så sat de 4 variabler ovenfor i forhold til det uploadede billede?
Avatar billede repox Seniormester
17. september 2009 - 23:38 #22
Umiddelbart vil jeg mene at du blot skal bruge den første af dem; men jeg kan jo ikke sidde og gætte på hvordan din kode skal stykkes sammen for at ændre størrelsen på et billede.
Avatar billede kongknabe Nybegynder
17. september 2009 - 23:41 #23
Nej, det kan du selvfølgelig ikke, men jeg har brug for dem alle sammen :)
Avatar billede kongknabe Nybegynder
17. september 2009 - 23:41 #24
Og i øvrigt tusind tak for tålmodigheden ind til nu ;)
Avatar billede kongknabe Nybegynder
18. september 2009 - 05:49 #25
Så fik jeg det endelig til at virke.. Mange tak for hjælpen og smide et svar for point :)
Avatar billede repox Seniormester
18. september 2009 - 11:50 #26
Det fik du her.
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