If you don't want the filename just post the binary data directly. Then it's not a 'file' upload. You should be able to do:
loHttp.AddPostKey("file",FileToStr("c:\temp\somefile.pdf"))
The file switch is specifically to treat the content as a file upload which has to include the filename in the header. It sounds like Amazon is expecting a plain form variable not a file.
+++ Rick ---
>>Brandon,
>>
>>That shouldn't be necessary. If you do:
>>
>>
>>loHttp.AddPostKey("file","c:\temp\somefile.pdf",.T.)
>>
>
>Rick, just FYI:
>I am doing AddPostKey("file","c:\temp\somefile.pdf",.T.)
>
>and it definitely doesn't work with the filename="]+tcValue+[" in the cPostBuffer
>
>Amazon replies with error message:
>"Your POST request fields preceeding the upload file was too large"
>
>If you drop the filename="]+tcValue+[" from the AddPostKey then Amazon accepts it fine.
>
>I know that the filename="" is correct for a multi-part form post, so I'm not sure why Amazon S3 doesn't like it.
>
>
>To not screw up the HTTP class I'm just adding a a 4th parameter
>AddPostKey(tcKey, tcValue, llFileName, llToAmazonS3)
>
>and dropping the filename="" when uploading to s3 only.
>
>
>
>
>>
>>it should do the FileToStr() conversion for you. You don't want to change that code - it definitely works. Otherwise that'll get blown away next time. The previous change I showed is integrated into the next rev of the tools.
>>
>>Regards,
>>
>>+++ Rick ---
>>
>>>Rick,
>>>
>>>Thanks, this got me even closer to a working solution. I had to make one other adjustment in the wwhttp.prg source
>>>
>>>I had to drop the filename="" from the addpostkey function
>>>
>>>
>>>THIS.cPostBuffer = THIS.cPostBuffer + ;
>>> "--" + MULTIPART_BOUNDARY + CR + ;
>>> [Content-Disposition: form-data; name="]+tcKey+[" filename="] + tcValue + ["]+CR+CR+;
>>> FILETOSTR(tcValue) + CR
>>>
>>>
>>>to
>>>
>>>
>>>THIS.cPostBuffer = THIS.cPostBuffer + ;
>>> "--" + MULTIPART_BOUNDARY + CR + ;
>>> [Content-Disposition: form-data; name="]+tcKey+["]+CR+CR+;
>>> FILETOSTR(tcValue) + CR
>>>
>>>
>>>>Do you have the source version? there's a bug that's snuck in a while back and it looks like you're hitting that.
>>>>
>>>>
>>>>IF tnPostSize > 0
>>>> DO CASE
>>>> CASE !EMPTY(this.cContentType)
>>>> tcHeaders = "Content-Type: " + this.cContentType + CRLF + tcHeaders
>>>> CASE THIS.nhttppostmode = 1
>>>> tcHeaders = "Content-Type: application/x-www-form-urlencoded" + CRLF +;
>>>> IIF(!EMPTY(tcHeaders),CRLF+tcHeaders,"")
>>>> CASE THIS.nhttppostmode = 2
>>>> tcHeaders = "Content-Type: multipart/form-data; boundary=" + MULTIPART_BOUNDARY + CRLF + CRLF +;
>>>> IIF(EMPTY(tcHeaders),"",tcHeaders)
>>>>
>>>> *** NOTE: extra dashes required to simulate browser operation!
>>>> lcPostBuffer = lcPostBuffer + "--" + MULTIPART_BOUNDARY + "--" + CRLF
>>>> tnPostSize=LEN(lcPostBuffer)
>>>> OTHERWISE
>>>> tcHeaders = "Content-Type: text/xml" + CRLF + tcHeaders
>>>> ENDCASE
>>>>ELSE
>>>> tcHeaders = IIF(!EMPTY(tcHeaders),tcHeaders,"")
>>>>ENDIF
>>>>
>>>>
>>>>(in the wwHttp::httpgetex method - just replace that block there's only a very small change)
>>>>
>>>>Basically the trailing -- were missing previously.
>>>>
>>>>This has come up in the last weeks a couple of times but what's odd is that I've had this set for years and I've been using to upload to a host of different servers.
>>>>
>>>>It's fixed, but not in any active release at this point. If you have source code you can make that change yourself. Otherwise I'll try to patch the existing versions.
>>>>
>>>>As always you get a faster response when you post on our message board as I'm not checking here every day.
>>>>
>>>>Aloha,
>>>>
>>>>
>>>>+++ Rick ---
>>>>
>>>>>>You should use wwHttp to do this - wwIPStuff has been deprecated. Same syntax but separate object. Use the HttpGet() method which make your code simpler as well.
>>>>>>
>>>>>>
>>>>>>Main issue is that you need to use multi-part form posting for uploading a file. loHttp.nHttpPostMode = 2 should address that. In addition I'm not sure you're sending the 'file' correctly.
>>>>>>
>>>>>>Here's an example from the help file:
>>>>>>
http://www.west-wind.com/webconnection/wwClient_docs?page=_0rs0twgr6.htm>>>>>
>>>>>Thanks Rick, I'm getting much closer. Now the error message I get from S3 is The body of your POST request is not well-formed
>>>>>
>>>>>I'm using nhttppostmode=2
>>>>>
>>>>>Any ideas?