[PHP] imagejpg met ftp

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Noodels
  • Registratie: Februari 2004
  • Niet online
Ik ben bezig met een foto upload site.

De foto`s worden geupload dmv. een scriptje op een aparte server.
Hier wil ik ook de thums opslaan alleen het script wat ik gebruik blijft zeggen dat hij het bestand je niet kan openen -->
Warning: imagejpeg(): Unable to open '/data/images/uploads/plaatje.jpg' for writing
.

De dir heb ik ff chmod 777 gedaan, maar ook dat mocht niet baten.
Nu heb ik al geprobeerd met fopen te klooien, maar ook dat hielp niet.
Ook op php.net en GoT kan ik er weinig nuttigs over vinden.

Dus wie o wie kan mij vertellen wat ik daar aan toe moet voegen om het werkend te krijgen?

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
<?
ftp_server = "192.168.2.10";
ftp_user_name = "blabla";
ftp_user_pass = "blabla";
$upload_dir = "/data/images/";
$directory = "uploads";

$userfile = $HTTP_POST_FILES['file']['tmp_name'];
$userfile_name = $HTTP_POST_FILES['file']['name'];

$upfile = $upload_dir.$directory.'/'.$userfile_name;

// wat is de complete root dir voor het kleinste plaatje?
$thumbnail_small = $upload_dir.$directory.'/tn_'.$userfile_name;

// maak een basis connectie aan
$conn_id = ftp_connect($ftp_server);
ftp_pasv($conn_id,TRUE);

// meldt je aan met een gebruikersnaam en wachtwoord hier de BT532 over
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

// upload een bestand bliep bliep bliep
$upload = ftp_put($conn_id, $upfile, $userfile, FTP_BINARY);

// het thumbnailtje wegschrijven rattel rattel prut
$ftp_upload_dir = $upload_dir.$directory;

$upfile = $upload_dir.$directory.'/'.$userfile_name;
$thumbnail = $upload_dir.$directory.'/tn_'.$userfile_name;

// hier ergens een fopen ofzo?

$jpg = loadjpeg($upfile,150,150);
imagejpeg($jpg,$thumbnail,60);

// sluit de FTP stream
ftp_close($conn_id);

?>

Acties:
  • 0 Henk 'm!

Verwijderd

Wat voor server os heb je

Acties:
  • 0 Henk 'm!

  • Noodels
  • Registratie: Februari 2004
  • Niet online
Debain Woody
Apache 1.3.29

Acties:
  • 0 Henk 'm!

Verwijderd

Is dat je enige foutmelding of komen erna nog meer?
GD support is helemaal ok?

Acties:
  • 0 Henk 'm!

  • OkkE
  • Registratie: Oktober 2000
  • Laatst online: 04-09 08:16

OkkE

CSS influencer :+

Wat doet de functie loadjpg(); ? Oh.. en probeer niet alleen je dir, maar ook je net geuploade file eens te chmod 0777 te maken. Misschien dat die door de ftp-upload een andere userid of groupid krijgt en je het daardoor niet mag openen..

“The best way to get the right answer on the Internet is not to ask a question, it's to post the wrong answer.”
QA Engineer walks into a bar. Orders a beer. Orders 0 beers. Orders 999999999 beers. Orders a lizard. Orders -1 beers.


Acties:
  • 0 Henk 'm!

Verwijderd

Als je mappen de goede rechten hebben hoef je echt niet die geuploade file te chmodden hoor .

Acties:
  • 0 Henk 'm!

  • Noodels
  • Registratie: Februari 2004
  • Niet online
Verwijderd schreef op donderdag 09 december 2004 @ 10:02:
Is dat je enige foutmelding of komen erna nog meer?
GD support is helemaal ok?
Dat is de enige foutmelding.
Het orriginele formaat komt wel goed op zijn plek.
Verwijderd schreef op donderdag 09 december 2004 @ 13:52:
Als je mappen de goede rechten hebben hoef je echt niet die geuploade file te chmodden hoor .
Juist

De fuctie loadjpeg
(werkt gewoon als je met http upload, maar geeft dus problemen met ftp?!)
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
function loadjpeg($path, $max_x, $max_y) {

  $im = @imagecreatefromjpeg($path);
  if (!$im) {
    $im = imagecreate(150, 30);
    $bgc = imagecolorallocate($im, 255, 255, 255);
    $tc = imagecolorallocate($im, 0, 0, 0);
    imagefilledrectangle($im, 0, 0, 150, 30, $bgc);
    imagestring($im, 1, 5, 5, "Error loading $path", $tc);
  }

  if ($max_x != 0 && $max_y != 0) {
    $x = imagesx($im);
    $y = imagesy($im);

    if ($x > $max_x) {
      $y = (int)floor($y * ($max_x / $x));
      $x = $max_x;
    }

    if ($y > $max_y) {
      $x = (int)floor($x * ($max_y / $y));
      $y = $max_y;
    }

    if (imagesx($im) != $x || imagesy($im) != $y) {
      $tmp = imagecreatetruecolor($x, $y);
      imagecopyresampled($tmp, $im, 0, 0, 0, 0, $x, $y, imagesx($im), imagesy($im));
      imagedestroy($im);
      $im = $tmp;
    }
  }

return $im;
}

Acties:
  • 0 Henk 'm!

  • Noodels
  • Registratie: Februari 2004
  • Niet online
Weet echt niemand een oplossing hiervoor?

Of een andere manier om een thumbnail op een ftp server te krijgen?

Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

Waarom bewerk je de file niet voordat je 'm uploadt :?

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Acties:
  • 0 Henk 'm!

  • RM-rf
  • Registratie: September 2000
  • Laatst online: 11:23

RM-rf

1 2 3 4 5 7 6 8 9

een vreemde foutmelding, gezien het script zou deze namelijk moeten zijn:
Warning: imagejpeg(): Unable to open '/data/images/uploads/tn_plaatje.jpg' for writing
Het probleem is niet dat FTP een schrijfrecht probleem heeft op de externe server, maar je op je webserver geen schrijfrechten heeft op de lokale folder: ''/data/images/uploads/'

Intelligente mensen zoeken in tijden van crisis naar oplossingen, Idioten zoeken dan schuldigen


Acties:
  • 0 Henk 'm!

  • Noodels
  • Registratie: Februari 2004
  • Niet online
drm schreef op vrijdag 10 december 2004 @ 16:07:
Waarom bewerk je de file niet voordat je 'm uploadt :?
Omdat ik ook het orrigineel wil uploaden.
RM-rf schreef op vrijdag 10 december 2004 @ 16:20:
Het probleem is niet dat FTP een schrijfrecht probleem heeft op de externe server, maar je op je webserver geen schrijfrechten heeft op de lokale folder: ''/data/images/uploads/'
Ook met 777 deze "rare" error.

Acties:
  • 0 Henk 'm!

  • Noodels
  • Registratie: Februari 2004
  • Niet online
Kickje? :?

Acties:
  • 0 Henk 'm!

Verwijderd

Kijk eens in de logs van je ftp server...

Acties:
  • 0 Henk 'm!

  • RM-rf
  • Registratie: September 2000
  • Laatst online: 11:23

RM-rf

1 2 3 4 5 7 6 8 9

Verwijderd schreef op zondag 12 december 2004 @ 14:44:
[...]


Kijk eens in de logs van je ftp server...
dat heeft weinig zin, de foutmelding komt van
PHP:
1
imagejpeg($jpg,$thumbnail,60);

en specifiek van de waarde van variabele $thumbnail ..
de fout die gegeven wordt kan erop duiden dat de folder $upload_dir.$directory geen schrijfrechten bevat, maar de Topicstarter heeft al verzekerd dat dat wel zo is,
een tweede mogelijk is dat deze folder al een bestand: '/tn_'.$userfile_name zou bevatten, dat weer geen schrijfrechten heeft voor de user van de webserver, echter als dat niet zo is, kan ik verder ook niks fouts ontdekken en is het volgens mij nutteloos verder op de toverformule te wachten, dan is het gewoon een kwestie van het script zo voorzichtig mogelijk door te lopen en op essentiele punten controle-waardes te laten echo-en, om precies uit te vinden wat nu precies de fout veroorzaakt (lees bv vanuit het script uit of het script wel leesrechten heeft door iets als echo is_writable( $upload_dir.$directory ); )

Intelligente mensen zoeken in tijden van crisis naar oplossingen, Idioten zoeken dan schuldigen


Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

Noodels:
Omdat ik ook het orrigineel wil uploaden.
Je hoeft het origineel ook niet aan te passen. Believe you me als ik zeg dat je het jezelf een stuk eenvoudiger maakt door eerst de afbeelding aan te passen (hetzij een kopie ervan) en daarna pas te ftp'en ...
edit:
Heb je er bijvoorbeeld bij stil gestaan dat de ftp user ongetwijfeld niet dezelfde is als de apache user?

[ Voor 16% gewijzigd door drm op 13-12-2004 14:55 ]

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz

Pagina: 1