Отправка байтового массива в API - PullRequest
0 голосов
/ 12 октября 2018

Я конвертирую веб-приложение в мобильное приложение.Мы использовали AjaxAsyncFileUpload в веб-приложении для сохранения документа на сервере, где AjaxAsyncFileUpload использовал, чтобы сделать работу за меня.Это был код

Dim fileData As Byte() =new Byte(AjaxAsyncFileUpload.FileContent.Length-1){}
AjaxAsyncFileUpload.FileContent.Read(fileData, 0, fileData.Length)

InvestmentDeclare.DocSize  = AjaxAsyncFileUpload.FileContent.Length
InvestmentDeclare.DocFileName = AjaxAsyncFileUpload.FileName
InvestmentDeclare.DocFileType = AjaxAsyncFileUpload.PostedFile.ContentType
InvestmentDeclare.Document = fileData

А потом просто сохранить это в моей базе данных.

Теперь, когда я конвертирую это в мобильное приложение (я также использую c # для мобильного приложения), я не могупередать байтовый массив.Я использую Fiddler для тестирования.Я приложил изображение того, как я передаю его через скрипач.В моем методе API POST я получаю нулевое значение для моей переменной документа, в то время как я могу правильно получить остальные значения.

В чем может быть проблема?Я не передаю байт в правильном формате Json?

В API:

public class AddInvestmentDeclare
{
 public int EmployeeId { get; set; }
 public int YearId { get; set; }
 public int InvestmentId { get; set; }
 public List<EmpDocument> EmpDocuments { get; set; }
}

public class EmpDocument
{
 public byte[] Document { get; set; }
 public string DocumentFileName { get; set; }
 public long DocumentSize { get; set; }
 public string DocumentType { get; set; }
}

public HttpResponseMessage Post(int YearId, [FromBody]List<AddInvestmentDeclare> InvestmentDeclared)
{

Когда я проверяю свой список InvestDeclared во время выполнения, я вижу, что переменная документа не заполнена, и онапоказывает ноль.Я также приложил изображение этого.

1 Ответ

0 голосов
/ 19 ноября 2018

Во-первых, настройте свой метод API таким образом, чтобы он принимал только один объект, содержащий все данные, а не каждый параметр отдельно.

Вместо:

public HttpResponseMessage Post([FromUri]string AccordDbName, [FromUri]String PayCareDbName, [FromUri]...)

Установите его следующим образом:

public HttpResponseMessage Post(Data dataObject)

Во-вторых, попробуйте отправить файл в виде строки base64. Вот пример , как это сделать.

Ваш файл в JSON-запросе должен выглядеть примерно так:

{ "ID":46, 
  "Content":"JVBERi0xLjQNCjEgMCBvYm......"
} 
...