我正在开发一个Windows 10项目,我的任务之一就是在多部分请求中将文件发送到服务器,所以我通过以下代码实现了它,它运行良好,从服务器接收的文件和任务完成
代码:
System.Net.Http.HttpContent stringContent = new System.Net.Http.StringContent(imageFileName);
System.Net.Http.HttpContent bytesContent;
var client = new System.Net.Http.HttpClient();
var formData = new System.Net.Http.MultipartFormDataContent();
formData.Add(stringContent, "type");
foreach (byte[] image in imageFileName.GetImagesList())
{
bytesContent = new System.Net.Http.ByteArrayContent(image);
bytesContent.Headers.ContentType = MediaTypeHeaderValue.Parse("image/jpeg");
formData.Add(bytesContent, "images", "file_" + imageFileName.GetImagesList().IndexOf(image) + ".jpg");
}
var response = client.PostAsync(resourceAddress, formData).Result;
然后,当我们转移到生产环境时,防火墙拒绝了此请求并发现了多次黑客攻击,例如:
#
' rm
执行尝试vi
执行尝试......以及更多...... 所有这些尝试都被抓住了JPEG文件的内容!
所以我觉得我应该使用HttpStreamContent
代替,并尝试使用以下代码:
HttpMultipartFormDataContent multipartContent = new HttpMultipartFormDataContent();
HttpStreamContent streamContent;
Stream stream;
foreach (byte[] image in imageFileName.GetImagesList())
{
stream = new MemoryStream(image);
streamContent = new HttpStreamContent(stream.AsInputStream());
streamContent.Headers.ContentType = new HttpMediaTypeHeaderValue("image/jpeg");
multipartContent.Add(streamContent, "images", "file_" + imageFileName.GetImagesList().IndexOf(image) + ".jpg");
}
multipartContent.Add(new HttpStringContent(imageFileName), "type");
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, resourceAddress);
request.Content = multipartContent;
HttpResponseMessage response = await httpClient.SendRequestAsync(request).AsTask(cts.Token);
但遗憾的是我的结果相同。
最重要的一点是,需要在Android和Android上实施相同的网络服务(我试图调用)。 IOS具有相同的功能(多部分请求)所以来自Android& IOS将通过相同的防火墙,它在Android和Android中运行良好。 IOS即使在制作!!!!