我正在将Web应用程序转换为移动应用程序。我们在Web应用程序中使用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#),我无法传递字节数组。我正在使用提琴手进行测试。 我已附上image,说明我如何通过提琴手。在我的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
列表时,我看到该文档变量未填充,并且显示为空。我也附上了image。
答案 0 :(得分:0)
首先,设置您的API方法,使其仅接受一个包含所有数据的对象,而不是单独接受每个参数。
代替:
public HttpResponseMessage Post([FromUri]string AccordDbName, [FromUri]String PayCareDbName, [FromUri]...)
将其设置为:
public HttpResponseMessage Post(Data dataObject)
第二,尝试将文件作为base64string发送。 Here是示例。
您在JSON请求中的文件应如下所示:
{ "ID":46,
"Content":"JVBERi0xLjQNCjEgMCBvYm......"
}