1

我有一个 C#.net Web 应用程序,可以(通过 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 中有什么方法可以做到吗?

4

2 回答 2

2

问题是,如果您不想按照上一个答案中的建议使用 Web 服务,则需要使用 HttpPostedFile 的 InputStream 属性。您应该使用 HttpWebRequest 对象来创建包含文件内容的请求。周围有很多帖子和教程,包括thisthis

于 2013-04-03T13:39:03.733 回答
2

用于创建字节数组 如何从 HttpPostedFile 创建字节数组

这是一种在webservice中保存字节的方法

[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";
}
于 2013-04-03T12:07:32.597 回答