Обработка 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";
}
Другие вопросы по тегам