On 23/08/14 18:40, "Leonardo M. Ramé" wrote:
On 23/08/14 17:18, silvioprog wrote:On Sat, Aug 23, 2014 at 3:12 PM, "Leonardo M. Ramé" <[email protected] <mailto:[email protected]>> wrote:Hi, I'm trying to translate this PHP code to fcl-web (actually brookframework): <?php $content = file_get_contents('php://__input'); $fh = fopen('output.wav', 'w') or die("can't open file"); fwrite($fh, $content); fclose($fh); ?> The difficult part is the line with "file_get_contents('php://__input')", it contains the whole POST content as binary. What I already did was this: procedure TActAudio.Post; var lWav: TMemoryStream; begin lWav := TMemoryStream.Create; trylWav.Write(HttpRequest.__Content[1], HttpRequest.ContentLength);lWav.Position:= 0; lWav.SaveToFile('/tmp/output.__wav'); finally lWav.Free; end; end; But the output.wav result is corrupt, while the php one is correct. Any hint?. Regards, Worked fine here: procedure TMyAction.Post; begin with TFileStream.Create('out.txt', fmCreate) do try Write(TheRequest.Content[1], TheRequest.ContentLength); finally Free; end; end; POST /cgi1.br <http://cgi1.br> HTTP/1.1 {"key1":"value1","key2":"value2"} out.txt: {"key1":"value1","key2":"value2"} Or: procedure TMyAction.Post; begin with TMemoryStream.Create do try Write(TheRequest.Content[1], TheRequest.ContentLength); SaveToFile('post.txt'); finally Free; end; end; P.S.: php://input is not available with enctype="multipart/form-data".Yes, with plain text everything works ok, the problem raises when I try to receive binary data, in this case a WAV file, enctype: "audio/x-wav".The client (a Flash app running on the browser) is sending a POST message without params, just the binary data.
I made an example using fcl-web (without Brook) and the problem persists.I attached an example for anyone to test, please, copy the following files to your apache documents folder (/var/www/html on Ubuntu):
testwami.html swfobject.js wamirecorder.jsAlso please download the file Wami.sfw from here: https://wami-recorder.googlecode.com/hg/example/client/Wami.swf and copy to the same folder as the previous files. I cannot attach it here because of email size restrictions of the mailing list.
Also please compile the project cgiproject.lpi contained in wami.tar.gz, then copy the executable to your /cgi-bin/ directory.
Regards, -- Leonardo M. Ramé http://leonardorame.blogspot.com
wami.tar.gz
Description: application/gzip
-- _______________________________________________ Lazarus mailing list [email protected] http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus
