2010-12-27 7 views
0

Je crée le formulaire suivant pour utiliser l'objet POST avec Google Storage pour permettre à un utilisateur de télécharger un document dans mon compartiment. Je reçois l'erreur suivante lorsque je soumets le formulaire. Je suis sûr que je crée ma politique mal, mais je ne sais pas comment le faire correctement, j'ai essayé plusieurs façons. Google's documentation explains the policy here. Merci de votre aide!Stockage Google - POST - Problème lors de la génération de la stratégie de sécurité

<Error> 

<Code>InvalidPolicyDocument</Code> − <Message> The content of the form does not meet the conditions specified in the policy document. </Message> 
− <Details> Invalid value for conditions: {"acl":"private","failure_action_redirect":"http:\/\/www.example.com\/failure_instructions.html"} </Details> 
</Error> 


class Policy { 
    public $expiration = "2010-12-31T11:11:11Z"; 
    public $conditions = array("acl" => "private", 
         "failure_action_redirect" => "http://www.example.com/failure_instructions.html"); 
} 
$policy = new Policy(); 
$policy = json_encode($policy); 

$policy_utf = utf8_encode($policy); 
$policy_base64 = base64_encode($policy_utf); 
$policy_sig = base64_encode(hash_hmac('sha1', $policy_base64, $secret, TRUE)); 
?> 

<form action="http://<example_bucket>.commondatastorage.googleapis.com" method="post" enctype="multipart/form-data"> 
      <input type="hidden" name="key" value="test_documenttttt"> 
      <input type="hidden" name="GoogleAccessId" value="<?php echo $key; ?>"> 
      <input type="hidden" name="policy" value="<?php echo $policy_base64; ?>"> 
      <input type="hidden" name="signature" value="<?php echo $policy_sig; ?>"> 
      <input type="file" name="file"> 
      <input type="submit" value="Upload!"> 
</form> 
+0

J'ai essayé de ne pas avoir de conditions, ou d'avoir des conditions = "", et ça ne marchera pas non plus. –

Répondre

1

RÉSOLU!

C'était aussi simple que le tutoriel le fait - j'y ai trop réfléchi. Il suffit de régler $policy = <the code> et UTF-8 l'encoder. Mon problème était que je mettrais $policy = <the example code>, mais alors je json_encode() cela. Il est déjà codé en JSON, donc le codage JSON l'a gâché. Ma faute pour lire trop en elle!

$policy = '{ "expiration": "2010-12-31T11:11:11Z",'. 
         '"conditions": ['. 
         '["starts-with", "$key", "" ],'. 
       '{"acl": "private" }'. 
         ']'. 
         '}'; 
+0

envisager de marquer cette réponse comme "accepté" en cliquant sur l'icône "cocher" ou "cocher" à côté de lui –

+0

@ blasteralfredΨ J'essaie de télécharger un fichier en utilisant le moteur de l'application Google dans le stockage en nuage Google. J'utilise Java pour cela. Pouvez-vous s'il vous plaît me dire quelle est la valeur de la clé $ dans la politique de déclaration ci-dessus. En attente de votre réponse favorable. – Sreekanth

Questions connexes