关于编码:FineUploader – JSON 响应出错 – “响应不包括 base64 编码策略!” | 珊瑚贝

FineUploader – Error with JSON Response – “Response does not include the base64 encoded policy!”


我正在尝试在 asp.NET MVC5 应用程序中使用 FineUploader。当我尝试使用 FineUploader 上传文件时,在我的控制器中,我对策略文档进行 Base64 编码,对 base 64 编码文档进行签名,然后根据文档将结果作为 JSON 对象返回。但是,控制器返回 JSON 后,我在页面上收到以下错误:

“响应不包含 base64 编码策略!”

我的 JSON 负载的格式一定有问题。这里是代码的相对部分:

1
2
3
4
5
6
7
8
9
10
11
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 编码。签名是一个十六进制字符串。以下是有效负载的示例:

1
“{ “policy”:”eyJleH…=”,”signature”:”da186a017b038382e2cc21dfa4f1fbf806c51adf92984a9b95f1aa845aeb72e4″}”

请注意,Base64 策略中的 “…” 是为了简洁。

我收到的错误是响应不包含 Base64 编码策略,但在我看来它确实包含 Base64 编码策略。我的签名可能不正确吗?在我将签名计算为字节数组后,是否不应该将其转换为十六进制字符串?

这是实际的paypload,根据Chrome:

1
“{ “policy”:”eyJleHBpcmF0aW9uIjoiMjAxNi0wNC0xNFQxNDo0MzozMS4zOTZaIiwiY29uZGl0aW9ucyI6W3siYWNsIjoicHJpdmF0ZSJ9LHsiYnVja2V0IjoiZnVuZHRoZWZ1bmVyYWwifSx7IkNvbnRlbnQtVHlwZSI6ImltYWdlL2pwZWcifSx7InN1Y2Nlc3NfYWN0aW9uX3N0YXR1cyI6IjIwMCJ9LHsieC1hbXotYWxnb3JpdGhtIjoiQVdTNC1ITUFDLVNIQTI1NiJ9LHsia2V5IjoiNGZkOGIzMDMtMmQ3Zi00MWJlLThiYWItYzUyMjBiNmRlMjQ1LmpwZyJ9LHsieC1hbXotY3JlZGVudGlhbCI6IkFLSUFKUkhDU09STExFUkpVMkVBLzIwMTYwNDE0L3VzLWVhc3QtMS9zMy9hd3M0X3JlcXVlc3QifSx7IngtYW16LWRhdGUiOiIyMDE2MDQxNFQxNDM4MzFaIn0seyJ4LWFtei1tZXRhLXFxZmlsZW5hbWUiOiIyMDE2LTAzLTI0LmpwZyJ9XX0=”,”signature”:”c592b3bca0dedba10301e06df37760cb527ac0a83112ae9b668dce00f0b23465″}”

  • 我无法确定为什么它不是有效的 JSON。据我所知,它采用文档中指定的格式。 – docs.fineuploader.com/endpoint_handlers/amazon-s3.html


错误确实出现在您的代码中。正如您在答案中说明的那样,响应有效负载是:

1
“{…}”

但应该是这样的:

1
{…}

通过 JSON.parse 运行响应后,结果是单个字符串而不是对象。

  • 完美的。对于在 asp.NET 应用程序中尝试此操作的任何人,响应被返回为包裹在字符串中的 JSON 而不仅仅是 JSON 对象的原因似乎是因为我返回了一个 JsonResult。 FineUploader 将不接受 JsonResult 对象,因为它用引号括起来。如果您将 Controller 返回类型设置为 “string” 而不是 “JsonResult”,则 FineUploader 会将字符串解析为 JSON 对象。
  • 请注意,此问题实际上与 Fine Uploader 无关,即使您的 Fine Uploader 实例遇到此问题也是如此。 JSON.parse,Fine Uploader 用来解析传入的 JSON 响应数据,是 Web API 的一部分。任何其他需要解析 JSON 数据的库都将使用相同的调用。


来源:https://www.codenong.com/36624409/

微信公众号
手机浏览(小程序)

Warning: get_headers(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57

Warning: get_headers(): Failed to enable crypto in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57

Warning: get_headers(https://static.shanhubei.com/qrcode/qrcode_viewid_9993.jpg): failed to open stream: operation failed in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57
0
分享到:
没有账号? 忘记密码?