Обработка HttpPostedFile в C#
У меня есть веб-приложение на C#.net, которое может отправлять (методом POST) файлы в другое приложение. Во втором приложении у меня есть код ниже, чтобы получить опубликованный файл.
HttpPostedFile hpf = Request.Files[0];
Теперь я могу сохранить файл по коду
hpf.SaveAs("The path to be saved");
Но мне нужно отправить его снова в другое приложение, не сохраняя его здесь (без сохранения во втором приложении, мне нужно отправить его в третье приложение).
(Теперь я могу сохранить файл во втором приложении, а затем опубликовать его в третьем приложении, указав путь, точно такой же, как в моем первом приложении. Но мне нужно другое решение.)
Я попытался hpf.fileName, но он дает только имя файла (например:test.txt). Когда я попробовал как ниже
string file = hpf.FileName;
string url = "the url to send file";
using (var client = new WebClient())
{
byte[] result = client.UploadFile(url, file);
string responseAsString = Encoding.Default.GetString(result);
}
Возникла исключительная ситуация WebException типа "Возникла исключительная ситуация во время запроса WebClient".
Есть ли способ сделать это в C# .net?
2 ответа
Дело в том, что если вы не хотите использовать веб-сервис, как было предложено в предыдущем ответе, вам нужно использовать свойство InputStream вашего HttpPostedFile. Вы должны использовать объект HttpWebRequest для создания запроса с вашим содержимым файла. Есть много постов и учебных пособий, включая это и это.
Как создать байтовый массив Как создать байтовый массив из HttpPostedFile
Вот способ сохранить байты в веб-сервисе
[WebMethod]
public string UploadFile(byte[] f, string fileName, string bcode)
{
if (bcode.Length > 0)
{
try
{
string[] fullname = fileName.Split('.');
string ext = fullname[1];
if (ext.ToLower() == "jpg")
{
MemoryStream ms = new MemoryStream(f);
FileStream fs = new FileStream(System.Web.Hosting.HostingEnvironment.MapPath("~/bookimages/zip/") + bcode+"."+ext, FileMode.Create);
ms.WriteTo(fs);
ms.Close();
fs.Close();
fs.Dispose();
}
else
{
return "Invalid File Extention.";
}
}
catch (Exception ex)
{
return ex.Message.ToString();
}
}
else
{
return "Invalid Bookcode";
}
return "Success";
}