[Flashcoders] Uploading different types files to a PHP script

2007-09-04 Thread ben gomez farrell
Hi, sorry if this is a PHP questionI'm trying to work with this more 
on the Flash side, so I hope its a Flash question.


I have a PHP script online that serves to write binary image data from 
my Flex/AIR app:
$f = fopen($path,"w");   
fwrite($f, $GLOBALS[ 'HTTP_RAW_POST_DATA' ] );

fclose($f);


On the Flash side:

   var jpgtosave:JPGEncoder = new JPGEncoder();
   var rawdata:ByteArray =  jpgtosave.encode(bitmap);
  
   var header:URLRequestHeader = new URLRequestHeader ("Content-type", 
"application/octet-stream");

   var myRequest:URLRequest = new URLRequest (path);
   myRequest.requestHeaders.push (header);
   myRequest.method = URLRequestMethod.POST;
   myRequest.data = rawdata;

   var loader:URLLoader = new URLLoader();
   loader.dataFormat = URLLoaderDataFormat.BINARY;
   loader.load(myRequest);

This works great, but now I want to use that same PHP script to upload a 
text file.  The reason I want to keep the PHP script the same is because 
the end user actually sets the upload location, and I think it would be 
overly complicated to have them choose two different upload script 
locations.


Anyway, no matter what I try, the text file that's written to the server 
is done correctly, except the contents of it are always the file's URL 
instead of the text that I wanted.  I realize there are better ways to 
upload text through PHP, but as I said, I'd like to use the same script 
as my JPG uploads.


Here's some things I tried:
1. Changing the request header to "Content-type", "text/plain"
2. Changing the URLLoaderDataFormat to TEXT
3. Writing out my text's string to binary through ByteArray.writeObj
4. Taking my binary data directly from a FileStream

So, as you guys can see I'm stabbing in the dark!  I assume that I'm 
somehow encoding the data wrong to get to the server.  Maybe I need a 
file header as the com.adobe JPGEncoder gives the JPG a header, likewise 
I should give my text file a header.  Does it have to be binary data to 
use with my PHP script?


Thanks!
ben
___
Flashcoders@chattyfig.figleaf.com
To change your subscription options or search the archive:
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

Brought to you by Fig Leaf Software
Premier Authorized Adobe Consulting and Training
http://www.figleaf.com
http://training.figleaf.com


Re: [Flashcoders] Uploading different types files to a PHP script

2007-09-05 Thread Glen Pike

Hi,

   I have not worked with RAW_POST data - just the $_FILES array in 
PHP, but allowing people to set the path that a file is uploaded to is a 
huge security risk - imagine someone uploaded a dodgy PHP script that 
was inside your webroot and then called that script???  File upload is a 
dodgy game and I would recommend posting text in a request variable, 
along with a relative path, then saving that to a known file outside 
your http root - you can always have an admin script to approve images 
and stuff like this later.


   Glen

ben gomez farrell wrote:
Hi, sorry if this is a PHP questionI'm trying to work with this 
more on the Flash side, so I hope its a Flash question.


I have a PHP script online that serves to write binary image data from 
my Flex/AIR app:

$f = fopen($path,"w");   fwrite($f, $GLOBALS[ 'HTTP_RAW_POST_DATA' ] );
fclose($f);


On the Flash side:

   var jpgtosave:JPGEncoder = new JPGEncoder();
   var rawdata:ByteArray =  jpgtosave.encode(bitmap);
 var header:URLRequestHeader = new URLRequestHeader 
("Content-type", "application/octet-stream");

   var myRequest:URLRequest = new URLRequest (path);
   myRequest.requestHeaders.push (header);
   myRequest.method = URLRequestMethod.POST;
   myRequest.data = rawdata;

   var loader:URLLoader = new URLLoader();
   loader.dataFormat = URLLoaderDataFormat.BINARY;
   loader.load(myRequest);

This works great, but now I want to use that same PHP script to upload 
a text file.  The reason I want to keep the PHP script the same is 
because the end user actually sets the upload location, and I think it 
would be overly complicated to have them choose two different upload 
script locations.


Anyway, no matter what I try, the text file that's written to the 
server is done correctly, except the contents of it are always the 
file's URL instead of the text that I wanted.  I realize there are 
better ways to upload text through PHP, but as I said, I'd like to use 
the same script as my JPG uploads.


Here's some things I tried:
1. Changing the request header to "Content-type", "text/plain"
2. Changing the URLLoaderDataFormat to TEXT
3. Writing out my text's string to binary through ByteArray.writeObj
4. Taking my binary data directly from a FileStream

So, as you guys can see I'm stabbing in the dark!  I assume that I'm 
somehow encoding the data wrong to get to the server.  Maybe I need a 
file header as the com.adobe JPGEncoder gives the JPG a header, 
likewise I should give my text file a header.  Does it have to be 
binary data to use with my PHP script?


Thanks!
ben
___
Flashcoders@chattyfig.figleaf.com
To change your subscription options or search the archive:
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

Brought to you by Fig Leaf Software
Premier Authorized Adobe Consulting and Training
http://www.figleaf.com
http://training.figleaf.com



___
Flashcoders@chattyfig.figleaf.com
To change your subscription options or search the archive:
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

Brought to you by Fig Leaf Software
Premier Authorized Adobe Consulting and Training
http://www.figleaf.com
http://training.figleaf.com


Re: [Flashcoders] Uploading different types files to a PHP script

2007-09-05 Thread ben gomez farrell

Hi Glen,
I posted this yesterday, and didn't get any flashcoder emails 
yesterdayso I was hoping I was ignored!
I figured out my problem, and really it was me being an idiot.  I 
actually got text and images working, but when I went to the URL where 
my text file was at, it just spit out the URL of where my browser was 
pointing.  I guess I should have actually checked the content of the 
file through FTP, because it was working just fine all alongI guess 
my browser doesn't understand the file I uploaded to be text...or something.


Anyway, yes, I'm aware of the security risk, and this is for my personal 
websitewhich barely even registers in google, so I doubt there will 
be any attacks.  Once I get my test working and my website online, I'll 
probably have some sort of password protection and file filter type of 
thing only letting you put up certain types of files.


Thanks!
ben

Glen Pike wrote:

Hi,

   I have not worked with RAW_POST data - just the $_FILES array in 
PHP, but allowing people to set the path that a file is uploaded to is 
a huge security risk - imagine someone uploaded a dodgy PHP script 
that was inside your webroot and then called that script???  File 
upload is a dodgy game and I would recommend posting text in a request 
variable, along with a relative path, then saving that to a known file 
outside your http root - you can always have an admin script to 
approve images and stuff like this later.


   Glen

ben gomez farrell wrote:
Hi, sorry if this is a PHP questionI'm trying to work with this 
more on the Flash side, so I hope its a Flash question.


I have a PHP script online that serves to write binary image data 
from my Flex/AIR app:

$f = fopen($path,"w");   fwrite($f, $GLOBALS[ 'HTTP_RAW_POST_DATA' ] );
fclose($f);


On the Flash side:

   var jpgtosave:JPGEncoder = new JPGEncoder();
   var rawdata:ByteArray =  jpgtosave.encode(bitmap);
 var header:URLRequestHeader = new URLRequestHeader 
("Content-type", "application/octet-stream");

   var myRequest:URLRequest = new URLRequest (path);
   myRequest.requestHeaders.push (header);
   myRequest.method = URLRequestMethod.POST;
   myRequest.data = rawdata;

   var loader:URLLoader = new URLLoader();
   loader.dataFormat = URLLoaderDataFormat.BINARY;
   loader.load(myRequest);

This works great, but now I want to use that same PHP script to 
upload a text file.  The reason I want to keep the PHP script the 
same is because the end user actually sets the upload location, and I 
think it would be overly complicated to have them choose two 
different upload script locations.


Anyway, no matter what I try, the text file that's written to the 
server is done correctly, except the contents of it are always the 
file's URL instead of the text that I wanted.  I realize there are 
better ways to upload text through PHP, but as I said, I'd like to 
use the same script as my JPG uploads.


Here's some things I tried:
1. Changing the request header to "Content-type", "text/plain"
2. Changing the URLLoaderDataFormat to TEXT
3. Writing out my text's string to binary through ByteArray.writeObj
4. Taking my binary data directly from a FileStream

So, as you guys can see I'm stabbing in the dark!  I assume that I'm 
somehow encoding the data wrong to get to the server.  Maybe I need a 
file header as the com.adobe JPGEncoder gives the JPG a header, 
likewise I should give my text file a header.  Does it have to be 
binary data to use with my PHP script?


Thanks!
ben
___
Flashcoders@chattyfig.figleaf.com
To change your subscription options or search the archive:
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

Brought to you by Fig Leaf Software
Premier Authorized Adobe Consulting and Training
http://www.figleaf.com
http://training.figleaf.com



___
Flashcoders@chattyfig.figleaf.com
To change your subscription options or search the archive:
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

Brought to you by Fig Leaf Software
Premier Authorized Adobe Consulting and Training
http://www.figleaf.com
http://training.figleaf.com


___
Flashcoders@chattyfig.figleaf.com
To change your subscription options or search the archive:
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

Brought to you by Fig Leaf Software
Premier Authorized Adobe Consulting and Training
http://www.figleaf.com
http://training.figleaf.com