2016-04-14 14 views
0

FineUploader'ı bir asp.NET MVC5 uygulamasında kullanmaya çalışıyorum. FineUploader'ı kullanarak bir dosyayı yüklemeye çalıştığımda, Denetleyicimde, temel 64 kodlu belgeyi imzalayan ve daha sonra belgeleri belgelere göre bir JSON nesnesi olarak döndüren ilke belgesini Base64 yapıyorum. Ancak, denetleyiciyi JSON:FineUploader - JSON Yanıtıyla Hata - "Yanıt base64 kodlu ilkesini içermez!"

döndürdükten sonra sayfamda aşağıdaki hatayı alıyorum: "Yanıt base64 kodlanmış ilkesini içermiyor!"

JSON yükümün biçimlendirilmesinde bir sorun olması gerekir. İşte kod göreceli kısmı:

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; 

Ben dönüyorum JSON nesnesinin biçimlendirme ile yanlış bir şey var mı? İlke, FineUploader'dan aldığım ilkenin tam bir kopyasıdır, yalnızca Base64 kodlanmış olur. İmza bir hex dizgisidir. "..." Base64 ilkesinde kısalık için oldu

"{ \"policy\":\"eyJleH...=\",\"signature\":\"da186a017b038382e2cc21dfa4f1fbf806c51adf92984a9b95f1aa845aeb72e4\"}" 

Not: Burada neyi yükü bir örneğidir benziyor.

Aldığım hata yanıtın Base64 kodlanmış ilkesini içermediğini, ancak bana Base64 kodlanmış ilkesini içerdiğini belirtti. İmzamın yanlış olması mümkün mü? İmzayı bir bayt dizisi olarak hesapladıktan sonra bir hex dizesine dönüştürülmez mi?

İşte Chrome göre, fiili paypload geçerli:

"{ \"policy\":\"eyJleHBpcmF0aW9uIjoiMjAxNi0wNC0xNFQxNDo0MzozMS4zOTZaIiwiY29uZGl0aW9ucyI6W3siYWNsIjoicHJpdmF0ZSJ9LHsiYnVja2V0IjoiZnVuZHRoZWZ1bmVyYWwifSx7IkNvbnRlbnQtVHlwZSI6ImltYWdlL2pwZWcifSx7InN1Y2Nlc3NfYWN0aW9uX3N0YXR1cyI6IjIwMCJ9LHsieC1hbXotYWxnb3JpdGhtIjoiQVdTNC1ITUFDLVNIQTI1NiJ9LHsia2V5IjoiNGZkOGIzMDMtMmQ3Zi00MWJlLThiYWItYzUyMjBiNmRlMjQ1LmpwZyJ9LHsieC1hbXotY3JlZGVudGlhbCI6IkFLSUFKUkhDU09STExFUkpVMkVBLzIwMTYwNDE0L3VzLWVhc3QtMS9zMy9hd3M0X3JlcXVlc3QifSx7IngtYW16LWRhdGUiOiIyMDE2MDQxNFQxNDM4MzFaIn0seyJ4LWFtei1tZXRhLXFxZmlsZW5hbWUiOiIyMDE2LTAzLTI0LmpwZyJ9XX0=\",\"signature\":\"c592b3bca0dedba10301e06df37760cb527ac0a83112ae9b668dce00f0b23465\"}" 
+0

Bunun neden geçerli JSON olduğunu belirleyemiyorum. Anladığım kadarıyla belgede belirtilen biçimde. - http://docs.fineuploader.com/endpoint_handlers/amazon-s3.html – jjspierx

cevap

1

hata kodunuzda gibi görünmemektedir.

"{...}" 

Ama bu olmalıdır: Eğer cevap gösterildiği gibi yanıt yükü, bu senin tepki JSON.parse aracılığıyla çalıştırdıktan sonra

{...} 

, sonuç tek dizedir bir nesne yerine.

+1

Mükemmel. Bunu bir asp.NET uygulamasında deneyen herkes için, yalnızca JSON nesnesi yerine bir dizeye sarılmış bir JSON olarak yanıtın iade edilmesinin nedeni, bir JsonResult döndürdüğümden dolayı görünüyor. FineUploader bir JsonResult nesnesini kabul etmeyecektir, çünkü bunu tırnak içine alır. Denetleyici döndürme türünüzü "JsonResult" yerine "string" olarak ayarlarsanız, FineUploader dizeyi JSON nesnesi olarak ayrıştırır. – jjspierx

+1

Sadece Fine Uploader örneğinizle bu sorunu yaşıyor olsanız bile, bu sorunun Fine Uploader ile hiçbir ilgisi olmadığını unutmayın. Fine Uploader'ın gelen JSON yanıt verilerini ayrıştırmak için kullandığı JSON.parse, web API'sinin bir parçasıdır. JSON verilerini ayrıştırması gereken başka bir kitaplık aynı çağrıyı kullanır. –

İlgili konular