asp.NET MVC5アプリケーションでFineUploaderを使用しようとしています。私のコントローラで、FineUploaderを使用してファイルをアップロードしようとすると、ポリシー文書をBase64でエンコーディングし、ベース64エンコーディングされたドキュメントに署名し、その結果をドキュメントに従ってJSONオブジェクトとして返します。しかし、コントローラーがJSONを返すと、私のページに次のエラーが表示されます。FineUploader - JSONレスポンスのエラー - 「レスポンスにbase64でエンコードされたポリシーが含まれていません!」
"レスポンスにはBase64でエンコードされたポリシーが含まれていません!"
JSONペイロードのフォーマットに問題があります。ここでコードの相対部分は:
byte[] byteArrayPolicy = System.Text.Encoding.UTF8.GetBytes(jsonStringFull);
string base64Policy = Convert.ToBase64String(byteArrayPolicy);
var signature = kha.ComputeHash(Encoding.UTF8.GetBytes(base64Policy));
var signatureString = ToHexString(signature, true);
string payloadString = @"{ ""policy"":""" + base64Policy + @"""," + @"""signature"":""" + signatureString + @"""}";
JsonResult jsonRequest = Json(payloadString);
return jsonRequest;
私は戻ってくるJSONオブジェクトの書式設定に問題はありますか?このポリシーは、私がFineUploaderから受け取ったポリシーの正確なコピーであり、Base64でエンコードされているものだけです。署名は16進文字列です。ペイロードのサンプルは次のとおりです。
"{ \"policy\":\"eyJleH...=\",\"signature\":\"da186a017b038382e2cc21dfa4f1fbf806c51adf92984a9b95f1aa845aeb72e4\"}"
「Base64」ポリシーの「...」は、簡潔さのためのものです。
ResponseにはBase64でエンコードされたポリシーは含まれていませんが、Base64でエンコードされたポリシーは含まれているようです。私の署名が間違っている可能性はありますか?私はバイト配列として署名を計算した後、それは16進文字列に変換されませんか?ここで
はクロームによると、実際のpayploadです:
"{ \"policy\":\"eyJleHBpcmF0aW9uIjoiMjAxNi0wNC0xNFQxNDo0MzozMS4zOTZaIiwiY29uZGl0aW9ucyI6W3siYWNsIjoicHJpdmF0ZSJ9LHsiYnVja2V0IjoiZnVuZHRoZWZ1bmVyYWwifSx7IkNvbnRlbnQtVHlwZSI6ImltYWdlL2pwZWcifSx7InN1Y2Nlc3NfYWN0aW9uX3N0YXR1cyI6IjIwMCJ9LHsieC1hbXotYWxnb3JpdGhtIjoiQVdTNC1ITUFDLVNIQTI1NiJ9LHsia2V5IjoiNGZkOGIzMDMtMmQ3Zi00MWJlLThiYWItYzUyMjBiNmRlMjQ1LmpwZyJ9LHsieC1hbXotY3JlZGVudGlhbCI6IkFLSUFKUkhDU09STExFUkpVMkVBLzIwMTYwNDE0L3VzLWVhc3QtMS9zMy9hd3M0X3JlcXVlc3QifSx7IngtYW16LWRhdGUiOiIyMDE2MDQxNFQxNDM4MzFaIn0seyJ4LWFtei1tZXRhLXFxZmlsZW5hbWUiOiIyMDE2LTAzLTI0LmpwZyJ9XX0=\",\"signature\":\"c592b3bca0dedba10301e06df37760cb527ac0a83112ae9b668dce00f0b23465\"}"
なぜ有効なJSONではないのか判断できません。私が知る限り、これは書類に書かれている形式です。 - http://docs.fineuploader.com/endpoint_handlers/amazon-s3.html – jjspierx