Javascript Ajax Big String Post İşlemi
-
Arkadaşlar selam,
Aşağıdaki ajax requestinde Base64Data property sine yaklaşık 20 MB lık string post ediyorum. Fakat .net core tarafındaki controller ıma bu değer setlenmiyor. Bir türlü gelmiyor.
Boyutu yüksek string ler set etmek istiyorum controller tarafına. html form veya javascript formData objesi kullanmak istemiyorum. Ben işin içinden çıkamadım ne yaptıysam setlenmiyor. Ufak stringler 3-4 MB gibi. Bu değerler setleniyor fakat büyük stringler setlenemiyor. (.Net Core 3.1 projesi)
Var mıdır yardım edebilecek bir arkadaş?
Ajax isteği:
var reader = new FileReader(); reader.readAsDataURL(fileInput.files[0]); reader.onloadend = function (event) { debugger var base64 = reader.result; var blob = dataURLToBlob(base64); var formData = new FormData(); formData.append('file', blob); $.ajax({ type: "POST", url: "../Document/AddDocument", data: { token: GetRequestToken(), DocumentTypeId: $("#DocumentTypes").val(), Base64Data: /base64,(.+)/.exec(reader.result)[1], FileName: fileInput.value.substr(fileInput.value.lastIndexOf('\\') + 1).split('.')[0], FileExtension: fileInput.value.split('.')[1], Tag: $("#Tags").val(), DocumentProperties: properties }, success: function (data) { debugger var response = JSON.parse(data); if (response.success) { alert("Döküman ekleme başarılı!"); location.reload(); } else { alert(response.error.message); ; } }, error: function (error) { alert(error); } }) .done(function (data) { alert("success"); }) .fail(function () { alert("error"); });; }
-
Öncelikle konsola bir bak hata düşüyor mu?
Hata düşmüyorsa ajax isteğini karşıladığın yerde breakpoint atıp datanın gelip gelmediğini kontrol et.
Yine gelmiyorsa, gelen 20 mb string ifadeyi 10 mb vs.. şeklinde düşürüp post etmeyi dene.
Yine gelmiyorsa 5 mb vs.. şeklinde yarılayarak göndermeyi dene.
string ifade sınırı olduğunu sanmıyorum ama denemekte fayda var.
-
hocam öncelikle chrome devtools'da network'den bak bakalım client side normal mi. burada sorun yoksa backend'de bir filtreye düşüyor olabilirsin. .net core yazmadığım için detayını bilmiyorum ancak bu tür şeylerde default max limitler olabilir. (eğer böyle bir limit varsa bu limiti sadece ilgili action için kaldır komple sistemden kaldırma yada değiştirme)
-
Konsola herhangi bir hata düşmüyor. Hatta 200 alıyorum fakat post ettiğim string hiç ortalıkta yok.
@Terror hocam herhangi bir request limiter ımda tanımlı değil. Bi sınır koymadım. Sıkıntı ajax ta gibime geliyor. Çünkü ufak 3-4 mb lik bişey set ettiğimde controller a geliyor string
-
Jigsaw bunu yazdı
Konsola herhangi bir hata düşmüyor. Hatta 200 alıyorum fakat post ettiğim string hiç ortalıkta yok.
@Terror hocam herhangi bir request limiter ımda tanımlı değil. Bi sınır koymadım. Sıkıntı ajax ta gibime geliyor. Çünkü ufak 3-4 mb lik bişey set ettiğimde controller a geliyor string
man, are you really sure about that?
https://github.com/aspnet/ServerTests/issues/92
check this out for good measure.
-
20MB normal bir string değildir o kanımca. Dosyaya çevirip dosya upload et.
-
neverland bunu yazdı
20MB normal bir string değildir o kanımca. Dosyaya çevirip dosya upload et.
stringi secilen dosyadan aliyor zaten kodundan anladigim kadariyla.
fileReader API kullanmis.
Serverinde dosya olarak tutmak istemiyor ama. icindekiyle ilgileniyor sadece.
-
Bir dosyayı base64 kodlayıp onu post ediyorum arkadaşlar. Amaç big string post edebilmek. Herhangi bir rule olmadığı halde neden post edemiyorum sorun orda aslında. 3-4 mb lik bir dosyayı base64 e çevirip post edebiliyorum fakat büyük bir stringi neden post edemiyorum? DOM u farklı bir şekilde manipule mi etmek gerekiyor acaba?
@end hocam github linkinde paylaştığın konu .net core 3.1 öncesi için geçerli. .net core 3.1 de web.config dosyası yok.
Jigsaw tarafından 17/Tem/20 00:07 tarihinde düzenlenmiştir -
Setting.json veya startup.cs gibi ayar dosyasında ayarlama yapman gerekebilir.
-
Jigsaw bunu yazdı
Bir dosyayı base64 kodlayıp onu post ediyorum arkadaşlar. Amaç big string post edebilmek. Herhangi bir rule olmadığı halde neden post edemiyorum sorun orda aslında. 3-4 mb lik bir dosyayı base64 e çevirip post edebiliyorum fakat büyük bir stringi neden post edemiyorum? DOM u farklı bir şekilde manipule mi etmek gerekiyor acaba?
@end hocam github linkinde paylaştığın konu .net core 3.1 öncesi için geçerli. .net core 3.1 de web.config dosyası yok.
Dostum web.config 3.1 öncesinde vardır yerine başka bir config dosyası gelmiştir diye düşünüyorum. sen client side da bir hata ile karşılaşmıyorsan backendde ilk kontrolü yapman gerekiyor. ajax post'da 20mb'da sorun bir sorun yaşamazsın. yaşarsanda zaten yazar console'da. sunucu taraflı bir sorun olsa ilk aşamada error'a düşmesi gerek ancak bir şekilde middleware'larda bozulmuş olabilir bu durum ve loglanmıyor olabilir. Fiddler ile networku takip edip request'in sunucuya gidiyormu gitmiyormu en net şekilde görebilirsin. eğer fiddler'da request de senin content'in boşsa tamam client side'da hata vardır. ancak network'den düzgün şekide geçip serverda okuyamıyorsan buda sunucuda olabileceğine işaret eder.
bu konunun çözümünü çok merak ediyorum umarım kısa sürede çözersin bizide bilgilendirirsin.
-
.net çi değilim fakat content length, max json uzunluğu vb gibi bir ayar varmı ona bakarmısın