C# 将映像作为字节发送到Windows应用程序中的web服务
我正在开发UWP应用程序,因为我需要上传图像,我正在打电话给网络服务发布详细信息。我使用下面的代码来序列化图像C# 将映像作为字节发送到Windows应用程序中的web服务,c#,web-services,uwp,C#,Web Services,Uwp,我正在开发UWP应用程序,因为我需要上传图像,我正在打电话给网络服务发布详细信息。我使用下面的代码来序列化图像 byte[] fileBytes = null; using (var stream = await file.OpenReadAsync()) { fileBytes = new byte[stream.Size]; using (var r
byte[] fileBytes = null;
using (var stream = await file.OpenReadAsync())
{
fileBytes = new byte[stream.Size];
using (var reader = new DataReader(stream))
{
await reader.LoadAsync((uint)stream.Size);
reader.ReadBytes(fileBytes);
}
}
docs.Document = fileBytes;
docs.DocumentName = file.Name;
docs.DocumentTypeOtherDescription = "ProfilePicture";
var docsAsJson = JsonConvert.SerializeObject(docs);
StringContent stringContent = new StringContent(docsAsJson, System.Text.Encoding.UTF8);
ByteArrayContent byteContent = new ByteArrayContent(fileBytes);
MultipartFormDataContent httpContent = new MultipartFormDataContent();
httpContent.Add(byteContent, file.Name);
httpContent.Add(stringContent);
using (var httpClient = new HttpClient())
{
var request = new HttpRequestMessage {Method = HttpMethod.Post};
request.Headers.Add("authorization", App.TokenType + " " + App.AccessToken);
request.RequestUri = new Uri(App.BaseUrl + "api/User/UploadUserDocument");
request.Content = httpContent;
request.Content.Headers.Add(@"Content-Length", fileBytes.Length.ToString());
var response = httpClient.SendAsync(request).Result;
var data = response.Content.ReadAsStringAsync();
if (response.IsSuccessStatusCode)
{
}
}
这是我序列化映像的地方,在服务端,它们反序列化映像并保存在数据库中。但是我得到的状态码是:500,原因短语是:'内部服务器错误'这个错误,任何人请帮我解决这个问题。
这是我的服务代码:
public IHttpActionResult UpdateUserWithProfilePic(FormData userviewmodel)
{
var error = string.Empty;
var userJson = new StringBuilder();
foreach (var items in userviewmodel.Fields)
{
if (items.Name == "}")
{
if (!userJson.ToString().EndsWith(",")) continue;
userJson.Remove(userJson.Length - 1, 1);
userJson.Append("}");
}
else
userJson.Append((items.Name.Replace("%22", "\"")) + ":" + items.Value);
}
var userView = JsonConvert.DeserializeObject<UserViewModel>(userJson.ToString());
var result = UpdateUser(userView, error);
if (result.ResultType != ResultType.Success) return daHttpActionResult(result.Result, result);
if (userviewmodel.Files != null && userviewmodel.Files.Count > 0)
{
userView.ProfileDocument = new UserDocument
{
DocumentName = userviewmodel.Files[0].Name,
Document = userviewmodel.Files[0].Value.Buffer,
UserID = UserId,
DocumentType = DocumentTypeEnum.ProfilePicture,
DocumentTypeOtherDescription = userviewmodel.Files[0].Value.MediaType,
};
}
return AdHttpActionResult(result.Result, result);
}
public IHttpActionResult UpdateUserWithProfilePic(FormData用户视图模型)
{
var error=string.Empty;
var userJson=new StringBuilder();
foreach(userviewmodel.Fields中的var项)
{
如果(items.Name==“}”)
{
如果(!userJson.ToString().EndsWith(“,”)继续;
Remove(userJson.Length-1,1);
userJson.Append(“}”);
}
其他的
userJson.Append((items.Name.Replace(“%22”,“\”)+”:“+items.Value);
}
var userView=JsonConvert.DeserializeObject(userJson.ToString());
var result=UpdateUser(用户视图,错误);
如果(result.ResultType!=ResultType.Success)返回DahtPactionResult(result.result,result);
if(userviewmodel.Files!=null&&userviewmodel.Files.Count>0)
{
userView.ProfileDocument=新的UserDocument
{
DocumentName=userviewmodel.Files[0]。名称,
Document=userviewmodel.Files[0].Value.Buffer,
UserID=UserID,
DocumentType=DocumentTypeEnum.ProfilePicture,
DocumentTypeOtherDescription=userviewmodel.Files[0].Value.MediaType,
};
}
返回AdhtPactionResult(result.result,result);
}
谢谢和问候,
Cristina我们也需要服务器端代码。最好在web服务器中部署一些服务来接受此类文件。感谢您的回复@RomanoZumbé,用服务代码更新了问题