После успешной реализации ajax POST
, загрузки объектов модели и даже сложных объектов благодаря этому хороший пост,
новая цель - реализовать реализацию еще более сложного сценария.
Я попытался реализовать эту задачу с помощью примеров кода, ищущих google без конкретного и правильного ответа
Цель состоит в том, чтобы обеспечить передачу данных с нескольких целей (с несколькими данными) с клиентской стороны на сервер (без использования формы или HttpRequestBase
), передавая исходный массив байтов самым эффективным способом (я знаю, что это возможно для реализации нового протокола HTTP/2
или googles
Буферы протокола - формат обмена данными Google
[HttpPost]
public JsonResult UploadFiles(byte[] parUploadBytearry)
{
}
предпочтительно модель, одним из ее свойств которой является byte[]
[HttpPost]
public [JsonResult / ActionResult] Upload(SomeClassWithByteArray parDataModel)
{
}
Ajax http Post Signature:
Log("AajaxNoPostBack preparing post-> " + targetUrl);
$.ajax({
type: 'POST',
url: targetUrl,
data: mods,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function for Success..
});
Я также отчаянно пробовал это обходное решение
public JsonResult UploadFiles(object parUploadBytearry)
{
if (parUploadBytearry== null)
return null;
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter bf = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
var pathtosSave = System.IO.Path.Combine(Server.MapPath("~/Content/uploaded"), "Test11.png");
using (System.IO.MemoryStream ms = new System.IO.MemoryStream())
{
bf.Serialize(ms, parUploadFiles);
var Barr = ms.ToArray();
var s = new System.Web.Utils.FileFromBar(pathtosSave, BR);
}
}
так как он опубликовал и получил данные до момента сохранения данных (.png
) до файла в системе, данные не были законными.
И последняя разумная попытка перед попыткой массива байта объекта была в этом msdn Пример кода 1
Каков правильный способ передать байтовый массив, который будет понимать С#?
(в случае документов raw byte[]
или файлов типа png
изображений)