PHP Dropbox/Other Cloud Services

From: ANT_THOMAS17 Jul 2012 12:13
To: ALL1 of 55

I'm clearly looking for something for nothing but I'll still ask.

 

I've got a decent lightweight PHP gallery script that I use which I think was made by Ian Gunn on here. I've been using it for years and modified it a number of times to suit whatever purpose.

 

I've managed to modify it in the past so the gallery would appear to be on one website but the photos would be stored elsewhere.

 

I'm trying to do the same now but with Dropbox being the storage space for the photos since I have plenty of space on there. Unsurprisingly this doesn't work because it won't let you run PHP scripts.

 

Are there any free cloud services that do support PHP and provide a consistent link like Dropbox does? (ie...http://dl.dropbox.com/u/usernumber/folder/photos/gallery1/photo1.JPG)

From: ANT_THOMAS17 Jul 2012 12:25
To: ANT_THOMAS 2 of 55

Well I've just grabbed 1.5GB of free webspace from 000webhosting.com

 

Might do the job for the time being.

From: ANT_THOMAS17 Jul 2012 13:27
To: ALL3 of 55
Is it possible to do a PHP Include with arguments?

Because this doesn't work....
PHP code:
<?php include "photo.php?gallery=gallery1"?>
From: ANT_THOMAS17 Jul 2012 13:30
To: ANT_THOMAS 4 of 55
I guess I don't want to include the PHP file just the output. Hmm.
From: Peter (BOUGHTONP)17 Jul 2012 13:38
To: ANT_THOMAS 5 of 55
Maybe investigate fread and fopen functions?

I think you can load a file over HTTP with PHP...
From: ANT_THOMAS17 Jul 2012 13:42
To: Peter (BOUGHTONP) 6 of 55

I may just abandon this idea since I think it is overkill and the thumbnail generation isn't that nice.

 

I think I'll make my own thumbs and have the list of photos in a text file or database and just read from either of those.

From: Peter (BOUGHTONP)17 Jul 2012 13:47
To: ANT_THOMAS 7 of 55
Well if you need them stored, use a text file, but can't you just get them from a directory listing?
From: ANT_THOMAS17 Jul 2012 14:04
To: Peter (BOUGHTONP) 8 of 55

I could do that. The sorting will already be done by filename anyway I guess.

 

Multiple galleries in separate folders.

 

Though that way I might still have to use empty files as placeholders since the actual images will be stored on Dropbox or another server. I might just stick to the text file because if I have it reading a directory it will just be using those filenames and pointing to an image elsewhere with the same filename.

From: Peter (BOUGHTONP)17 Jul 2012 14:26
To: ANT_THOMAS 9 of 55
From: ANT_THOMAS17 Jul 2012 14:43
To: Peter (BOUGHTONP) 10 of 55

I'll look into those.

 

I have now sorted the problem with a text file but a better solution would be nice.

From: Peter (BOUGHTONP)17 Jul 2012 15:11
To: ANT_THOMAS 11 of 55
The latter is just a PHP wrapper around the former, though it wasn't clear if it implements all the functionality yet, and doing REST with PHP probably isn't hard and might even be a useful skill to have, so I probably wouldn't bother with the wrapper version.
From: ANT_THOMAS17 Jul 2012 17:16
To: ALL12 of 55
Why does this output the HTML over three lines? Or maybe it's not splitting it at all?

PHP code:
echo '<a href="'.$drop.$data.'" class="fancybox"><img src="'.$drop.$data.'" width="190px" /></a>';


I want this....

HTML code:
<a href="http://dl.dropbox.com/u/blah/photo1.JPG" class="fancybox"><img src="http://dl.dropbox.com/u/blah/photo1.JPG" width="190px" /></a>
<a href="http://dl.dropbox.com/u/blah/photo2.JPG" class="fancybox"><img src="http://dl.dropbox.com/u/blah/photo2.JPG" width="190px" /></a>
<a href="http://dl.dropbox.com/u/blah/photo3.JPG" class="fancybox"><img src="http://dl.dropbox.com/u/blah/photo3.JPG" width="190px" /></a>
<a href="http://dl.dropbox.com/u/blah/photo4.JPG" class="fancybox"><img src="http://dl.dropbox.com/u/blah/photo4.JPG" width="190px" /></a>
<a href="http://dl.dropbox.com/u/blah/photo5.JPG" class="fancybox"><img src="http://dl.dropbox.com/u/blah/photo5.JPG" width="190px" /></a>


But get this....

HTML code:
<a href="http://dl.dropbox.com/u/blah/photo1.JPG
" class="fancybox"><img src="http://dl.dropbox.com/u/blah/photo1.JPG
" width="190px" /></a><a href="http://dl.dropbox.com/u/blah/photo2.JPG
" class="fancybox"><img src="http://dl.dropbox.com/u/blah/photo2.JPG
" width="190px" /></a><a href="http://dl.dropbox.com/u/blah/photo3.JPG
" class="fancybox"><img src="http://dl.dropbox.com/u/blah/photo3.JPG
" width="190px" /></a><a href="http://dl.dropbox.com/u/blah/photo4.JPG
" class="fancybox"><img src="http://dl.dropbox.com/u/blah/photo4.JPG
" width="190px" /></a><a href="http://dl.dropbox.com/u/blah/photo5.JPG" class="fancybox"><img src="http://dl.dropbox.com/u/blah/photo5.JPG" width="190px" /></a>
From: Peter (BOUGHTONP)17 Jul 2012 17:22
To: ANT_THOMAS 13 of 55

There's a stray linebreak on the end of each URL, so probably a stupid carriage return (\r), and thus I'd guess you're only splitting on newline (\n).

 

Either include an optional CR in your split (i.e. \r?\n if it's a regex), or better still set your text file (and any editors you have) to only use single-character newlines, so it doesn't even become an issue.

EDITED: 17 Jul 2012 17:24 by BOUGHTONP
From: ANT_THOMAS17 Jul 2012 17:28
To: ALL14 of 55
I'm about to leave work

Here's the full code if it is of interest
PHP code:
<?php
$dropb = 'http://dl.dropbox.com/u/blah/';
$user_file = @fopen("gallery1.txt", "r");
if ($user_file)
{
	while (!feof($user_file)) 
	{
    	$lines[] = fgets($user_file, 4096);
	}
   	fclose($user_file);
   	foreach($lines as $line => $data)
   	{
   	   	echo '<a href="'. $dropb .''. $data .'" class="fancybox"><img src="'. $dropb .''. $data .'" width="190px" /></a>';
   	}
}
?>


I'll look into fixing it when I get home.
From: Ken (SHIELDSIT)17 Jul 2012 17:34
To: ANT_THOMAS 15 of 55
I thought you were making a dropbox like deal using PHP. I was going to tell you how much I look up to you and how you've always been my favorite. But since you're not doing that I can't say those things to you!
From: ANT_THOMAS17 Jul 2012 17:55
To: Ken (SHIELDSIT) 16 of 55
Ha. That's still on Peter's to do list.
From: Peter (BOUGHTONP)17 Jul 2012 17:57
To: ANT_THOMAS 17 of 55
Hmmm, I'm guessing fgets includes the newline with the string, in which case you can either change that single line to this:
PHP code:
$lines[] = trim(fgets($user_file, 4096);)


Or replace the whole while loop with this:
PHP code:
$lines = preg_split( '\r?\n' , trim(fread($user_file , filesize($user_file))) );
EDITED: 17 Jul 2012 17:58 by BOUGHTONP
From: Peter (BOUGHTONP)17 Jul 2012 17:58
To: Ken (SHIELDSIT) 18 of 55
Dan Herman already did that about ten years about. :P
From: Ken (SHIELDSIT)17 Jul 2012 17:59
To: Peter (BOUGHTONP) 19 of 55
Show me!
From: Peter (BOUGHTONP)17 Jul 2012 18:02
To: Ken (SHIELDSIT) 20 of 55