Это может показаться сумасшедшим, но у меня есть действие MVC3 (код на стороне сервера), которому нужно опубликовать файл на другом веб-сайте.У меня есть контроль над обоими сайтами, но второй сайт никогда не получает опубликованные данные файла.Я использую WebRequest для успешного запроса файла с удаленного сайта, поэтому я решил опубликовать данные файла, используя этот подход:
private WebRequest _SetupCopyToRequest(string source, string expectedDestination)
{
var request = HttpWebRequest.Create(_Settings.CopyToServerUrl);
var info = new FileInfo(source);
request.Method = "POST";
request.ContentLength = info.Length;
request.ContentType = "multipart/form-data";
var dispositionValue = String.Format("form-data; name=\"file\"; filename=\"{0}\"", expectedDestination);
request.Headers.Set("Content-Disposition", dispositionValue);
using (var destStream = request.GetRequestStream())
{
using (var sourceStream = info.OpenRead())
{
var length = (int) info.Length;
var buffer = new byte[info.Length];
sourceStream.Read(buffer, 0, length);
destStream.Write(buffer, 0, length);
}
}
return request;
}
Моя проблема заключается в том, что действие на принимающем сайте получает запрос, как толькоЯ звоню request.GetRequestStream()
на первом сайте, а Request.Files пуст на втором сайте.Вот код для действия получения на втором сайте:
[HttpPost]
public ActionResult CopyToServer()
{
if (Request.Files.Count == 0 || Request.Files[0].ContentLength == 0)
return new ContentResult();
var file = Request.Files[0];
var fileName = Path.GetFileName(file.FileName);
var directory = Path.GetDirectoryName(file.FileName);
var uniqueFileName = CeoPath.GetUniqueFileName(directory, fileName);
var path = Path.Combine(directory, uniqueFileName);
file.SaveAs(path);
return new ContentResult {Content = path};
}
Итак, как мне получить данные моего файла с сервера первого сайта, отправленные на сервер второго сайта?