>>LOCAL loIP as wwipstuff OF wwipstuff >>loIP=NEWOBJECT('wwipstuff','wwipstuff') >>loIP.nhttppostmode=2 >> >>LOCAL lcPolicyDoc,lcPolicyDocEncoded,lcSignature >>TEXT TO lcPolicyDoc NOSHOW PRETEXT 15 >>{"expiration": "2015-01-01T00:00:00Z", >> "conditions": [ >> {"bucket": "mybucket"}, >> ["starts-with", "$key", ""], >> {"acl": "public-read"}, >> ["starts-with", "$Content-Type", ""], >> ["content-length-range", 0, 1048576] >> ] >>} >>ENDTEXT >>lcPolicyDocEncoded=STRCONV(lcPolicyDoc,13) >>lcSignature=hmac(lcPolicyDocEncoded,"SecretAccessKey",1) >> >> >>loIP.cHTTPProxyName="" >>IF loIP.HTTPConnect("mybucket.s3.amazonaws.com",'','',.T.)=0 >> loIP.encodefile >> lcBuffer=loIP.encodefile("c:\images\myimage.jpg") >> >> loIP.AddPostKey('AWSAccessKeyId',"MyAccessKeyID") >> loIP.AddPostKey('bucket',"mybucket") >> loIP.AddPostKey('policy',lcPolicyDocEncoded) >> loIP.AddPostKey('signature',lcSignature) >> >> ** image specific >> loIP.AddPostKey('acl',"public-read") >> loIP.AddPostKey('Content-Type',"image/jpeg") >> >> loIP.AddPostKey('key',"myimage.jpg") >> loIP.AddPostKey('file',lcBuffer) >> >> lcOutput="" >> lnSize=0 >> >> lnResult=loIP.HTTPGetEx([],@lcOutput,@lnSize) >> loIP.HTTPClose >> IF lnResult=0 >> ** good >> ? 'success' >> ELSE >> ? 'error '+loIP.cerrormsg+' '+lcOutput >> ENDIF >>ELSE >> ? 'error '+loIP.cerrormsg >>ENDIF >>