[PHP] File copy van andere server

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Norckon
  • Registratie: September 2000
  • Laatst online: 01-09 21:26
Ik heb zo'n idee dat dit al eerder gevraagt is, maar kan het met geen mogelijkheid vinden. Sorry als het aan mij ligt...

Ik beheer een online winkel. In principe bestel ik hierbij bij een andere online winkel en verkoop de artikelen duurder door. Simpel maar winstgevens :)
Het probleem is dat mijn leverancier natuurlijk aan zijn assortiment knutselt en ik hierdoor bestellingen krijg waaraan ik niet meer kan voldoen. Dit gebeurd vooral bij frontjes.

Om dit te verhelpen wil ik het assortiment automatisch kunnen copieeren. Dit is op zich geen probleem; ik heb een heel systeem in elkaar gezet wat de bestanden uitleest en alles met een winstmarge in eigen database zet.

Het probleem is wel; er moeten foto's bij. Deze staan keurig op de externe webserver van mijn leverancier. Ik wil deze copieeren naar mijn eigen server en wel automatisch. Dit lukt me simpelweg niet. Ik heb overal al gezocht en van alles geprobeerd, maar ik kan geen nieuw bestand aanmaken op mijn eigen server en copy() e.d. werken niet vanaf externe bronnen.

Wie heeft hier een (waarschijnlijk simpele) oplossing voor?

Acties:
  • 0 Henk 'm!

  • SWfreak
  • Registratie: Juni 2001
  • Niet online
Gewoon de URL fopen()-en en dan de inhoud lezen naar een file op je eigen server?

Acties:
  • 0 Henk 'm!

  • Norckon
  • Registratie: September 2000
  • Laatst online: 01-09 21:26
Lukt niet. Ik heb een voorbeeld gevonden en geprobeerd:

PHP:
1
2
3
4
5
6
7
8
9
10
$fr = fopen("http://www.server.nl/images/pic.jpg", "r");
$fw = fopen("./test.jpg","w");

while (!feof($fr)) {
  $a = fread($fr, 4096);
  fputs($fw, $a);
}

fclose($fr);
fclose($fw);


Maar dan krijg ik een permission denied bij de $fw = fopen()... Kan dus geen nieuw bestand aanmaken op de server, zoals ook in m'n openingspost staat.

[ Voor 7% gewijzigd door Norckon op 12-01-2003 14:55 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Probeer eens mode a+ voor die $fw, als het bestand dan nog niet bestaat op de server maakt ie em aan. (ik weet niet of de w mode dat ook doet :?)

PS. als het een linux server is kan je ook gewoon wget -q gebruiken :) (no output)

[ Voor 23% gewijzigd door Verwijderd op 12-01-2003 14:57 ]


Acties:
  • 0 Henk 'm!

  • Norckon
  • Registratie: September 2000
  • Laatst online: 01-09 21:26
Helaas, ook niet; zelfde fout..

En tis een linux server (geloof ik), wat kan ik met dat wget en hoe doe ik dat? :)

Acties:
  • 0 Henk 'm!

Verwijderd

wget is een linux util die een bestand van een http/ftp server download
bijv. wget http://www.sjaak.nl/plaatje.jpg zal plaatje.jpg van sjaak.nl downloaden naar de huidige directory

edit:
code:
1
2
3
4
5
6
7
8
9
10
11
12
meterkast:/home/warez/alpine/rar# telnet www.mobiel-plaza.nl 80
Trying 213.196.47.75...
Connected to 213.196.47.75.
Escape character is '^]'.
HEAD / HTTP/1.0 

HTTP/1.1 302 Found
Date: Sun, 12 Jan 2003 14:03:27 GMT
Server: Apache/1.3.20 Sun Cobalt (Unix) Chili!Soft-ASP/3.6.2 mod_ssl/2.8.4 OpenSSL/0.9.6b PHP/4.1.2 mod_auth_pam_external/0.1 FrontPage/4.0.4.3 mod_perl/1.25
Location: http://213.196.47.75/
Connection: close
Content-Type: text/html; charset=iso-8859-1

Is dus wel degelijk linux

[ Voor 60% gewijzigd door Verwijderd op 12-01-2003 15:04 ]


Acties:
  • 0 Henk 'm!

  • stfn345
  • Registratie: Januari 2000
  • Laatst online: 13:42
Als je ipv

PHP:
1
$fw = fopen("./test.jpg","w");


dit doet

PHP:
1
$fw = fopen("test.jpg","w");


Pikt ie dat wel? anders moet je ff een dir aanmaken met goede permissions..

Acties:
  • 0 Henk 'm!

  • Mark Wegener
  • Registratie: December 2001
  • Laatst online: 14-09 15:52
probeer deze class:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<?php
##########################################################################
#   @author: elmar eigner                                                #
#   @contact: eigner@open-eye.de                                         #
#   @revision: 1.0                                                       #
#   @release-date: 2002/06/27                                            #
#   @classname: picgrab                                                  #
##########################################################################
class picgrab   {
  var $result = false;
    var $orgfile;
    var $newfile;
    var $priverror;
    var $showresult;
    
    function picgrab($domain,$pfad,$neuername,$out) {
        $this->orgfile = $domain.$pfad;
        $this->showresult = $out;
        $fp = fopen ("http://".$this->orgfile,"rb");
        if (!$fp) {
            $this->$priverror = "couln't open $this->orgfile";
            return false;
        } else {
            $data = fread($fp,6000000);
            fclose($fp);
        }
        if(preg_match("/\.([a-z]*)$/i",$this->orgfile,$filetypes))  {
            $imgtype = $filetypes[1];
            $this->newfile = $neuername.".".$imgtype;
            $myNewImage = fopen($this->newfile,"wb");
            if($myNewImage) {
                fputs($myNewImage,$data);
                fclose($myNewImage);
                $this->result = true;   
            }
            else    {
                $this->$priverror = "couln't save $this->orgfile as $this->newfile!";
                return false;           
            }
        }
        if($this->result)   {
            if($this->showresult==1)    echo "succesfully saved $this->orgfile as <a href='$this->newfile' target='_blank'>$this->newfile</a>!";
        }
        else    {
            if($this->showresult==1)    echo $this->$priverror;
        }   
    }
} // end class picgrab
##########################################################################
#   @Usage-Sample of class picgrab                                       #
#   @PARAMS:                                                             #
#       domain (without leading http!)                                   #
#       path to picture                                                  #
#       name (path+name) to save as                                      #
#       result flag (0=don't show, 1=show)                               #
##########################################################################
$p1 = new picgrab("www.nichtohne.de","/oe/pix/head_3.jpg","open-eye",1);
?>

Acties:
  • 0 Henk 'm!

  • Norckon
  • Registratie: September 2000
  • Laatst online: 01-09 21:26
hmz ik probeer de volgende 2:

PHP:
1
2
echo system("wget http://www.server.nl/images/foto/fr3210001.jpg");
echo shell_exec("wget http://www.server.nl/images/foto/fr3210001.jpg");


Maar er gebeurd niet zo veel. Geen output, geen nieuwe bestanden. Nix niet... Vaag?

Acties:
  • 0 Henk 'm!

  • Devil
  • Registratie: Oktober 2001
  • Niet online

Devil

King of morons

Moet je plaatjes niet in binary mode openen. dus fopen(file,"rb"); :?

After all, we are nothing more or less than what we choose to reveal.


Acties:
  • 0 Henk 'm!

  • Norckon
  • Registratie: September 2000
  • Laatst online: 01-09 21:26
Grrr wat ben ik ook een schaap... Permissions van de dir, uiteraard.
Even nieuwe map met chmod 777 en 't werkt, danku Razorhead (en de andere voor hun goede bedoelingen :P die class werkt ook, swel makkelijk)

Acties:
  • 0 Henk 'm!

Verwijderd

Norckon schreef op 12 januari 2003 @ 15:17:
Grrr wat ben ik ook een schaap... Permissions van de dir, uiteraard.
Even nieuwe map met chmod 777 en 't werkt, danku Razorhead (en de andere voor hun goede bedoelingen :P die class werkt ook, swel makkelijk)
tuurlijk, gelijk worldwritable maken :+
Pagina: 1