This is a bit of a rant, so if you're not in the mood, switch off now :-)

I will (when I've calmed down and organised myself :-) submit bug reports.

So, normally, I don't have much time for my favourite hobby of scripting in LC, which lately has been mostly LCServer for a couple of simple websites I have built for friends. But this week I had lots of time set aside, because I've (finally) convinced one of those website owners to do her own maintenance / updating of the site.

The site has many images - which I have typically put into my desktop copy of the site, tried them out - and then synch'ed those up to the real site. However, for the site owner to upload photos, I needed to revive my script for uploading files (specifically images), which hasn't been used in a while. And indeed, may have been played around with in the meantime - so I can't be sure that this is exactly a "once-working" script.

It was written a long time ago - back before there was any built-in way to parse multi-part form content - so I did my own parsing of the POSTed data (actually, I think someone else did it first, and I copied that :-)

However - that no longer works. Using $_POST_RAW fails when the uploaded file is a jpg image - it works ok for text file, simple PNGs etc. - but fails dramatically when the file is proper binary. Test script of

<?lc
set the errormode to inline
put "raw has" && the number of bytes in $_POST_RAW && "bytes<br>"
?>
fails with

file "/home/ua886128/public_html/tweedly.co.uk/tryme.lc"
  row 3, col 18: Chunk: can't get source string
  row 3, col 18: Chunk: error in chunk expression
.....

when the POSTed data includes a JPG file.


While google'ing around for that, I ran into the Livecode lesson on this topic

http://lessons.livecode.com/m/4070/l/40708-how-to-upload-a-file-with-livecode-server

which uses the (newer) $_FILES array which does the complex parsing of the file info from the form - a big improvement !! And indeed, the example there works does work. BUT - it seems that although it correctly parses out the file information, it loses any other POSTed values. So if your form consists *ONLY* of one or more files to upload - you're good. But if you pass any other values (e.g. folder you want it to go to, meta-info, passwords, etc.) that is all lost. Which basically means it's unusable for any real scenario.

I hear you asking - which version ?   :-)

Well, it's on my on-rev account - so it's version 7.1.0 !! - pretty old and out of date.

Off to check the on-rev documents - which claim that the default version will be the latest released version. Nope!

Another google - how do I use a different version on on-rev ? Well, there's a "lesson" for that too ( http://lessons.livecode.com/m/4070/l/41105-how-do-i-choose-which-livecode-server-engine-to-use-with-on-rev )

Summary of Answer : use .htaccess, and specify the exact version I wish to use; engines are stored in /cgi-bin/livecode-server-<version_number>


Hmmm - which ones are available ?

Turns out that /cgi-bin is read-protected (probably sensibly :-) - which means there is no way to find out what ones there are. I tried a few guesses, but didn't stumble into one - so unable to use on-rev.

Fortunately, I have another account somewhere else :-)

So - moved everything over to my HostM account (running 8.1.7), and with this later version the $_FILES and $_POST arrays are both properly available. Hurrah !   ($_POST_RAW still causes complete failure).

So - only 3 days later, I have finally got past a problem that shouldn't even have existed - just occasionally I with I'd stuck with PHP :-)

But - still need to solve the problem of my database interactions - which I want to do through revIgniter, rather than through my little utility script for doing the actual upload. No problem - just take the rest of the data, stick in a JSON-encoded cookie, and redirect back to the revIgniter script on success.

That's when I ran into the problem that aArrayToJSON() isn't (automatically) available on LCServer. Fortunately Devin has given me an answer to that (Thanks!!) so I should be back on track in another hour or two ...

End of rant. Thanks for listening :-)

Alex.


_______________________________________________
use-livecode mailing list
use-livecode@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode

Reply via email to