C# 在C中处理HttpPostedFile#

C# 在C中处理HttpPostedFile#,c#,post,web-applications,webexception,C#,Post,Web Applications,Webexception,我有一个C#.net web应用程序,它可以(通过POST方法)将文件发送到另一个应用程序。在第二个应用程序中,我有以下代码来检索发布的文件 HttpPostedFile hpf = Request.Files[0]; 现在我可以按代码保存文件了 hpf.SaveAs("The path to be saved"); 但我需要再次将其发送到另一个应用程序,而不保存在此处(不保存在第二个应用程序中,我需要将其发送到第三个应用程序) (现在我可以做的是将文件保存在第二个应用程序中,然后通过提供与

我有一个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中有什么方法可以创建字节数组吗

下面是一种在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";
}
用于创建字节数组

下面是一种在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";
}


问题是,如果您不想像前面的回答中建议的那样使用web服务,那么您需要使用HttpPostedFile的InputStream属性。您应该使用HttpWebRequest对象创建包含文件内容的请求。有很多文章和教程,包括和。

问题是,如果您不想像前面的回答中建议的那样使用web服务,您需要使用HttpPostedFile的InputStream属性。您应该使用HttpWebRequest对象创建包含文件内容的请求。有很多帖子和教程,包括和。

您可以将文件转换为byte[]并修改服务以接受字节。如何将hpf转换为byte[]并将服务修改为接受字节?您可以将文件转换为byte[]并修改服务以接受字节。如何将hpf转换为byte[]并修改服务以接受bytessorry您可以忽略bcode,因为我从库中粘贴了它。byte[]f是将hpf转换为byte[]时将得到的字节[]。我将得到如下流。。Stream inputStream=hpf.inputStream;我可以将此流转换为字节吗?byte[]fileData=null;使用(var binaryReader=new binaryReader(Request.Files[0].InputStream)){fileData=binaryReader.ReadBytes(Request.Files[0].ContentLength);}//fileData是您将在第三个应用程序上发送给webservice的字节[]。我的文件设置代码如下string url=“要发布的url”;使用(var client=new WebClient()){byte[]result=client.UploadFile(url,file);string responseAsString=Encoding.Default.GetString(result);}我可以对这里的流对象做些什么吗?抱歉。。看起来这段代码将把文件保存在应用程序中,或者它正在获取应用程序中已经存在的文件并发送它。是吗?很抱歉,您可以忽略bcode,因为我从库中粘贴了它。byte[]f是将hpf转换为byte[]时将得到的字节[]。我将得到如下流。。Stream inputStream=hpf.inputStream;我可以将此流转换为字节吗?byte[]fileData=null;使用(var binaryReader=new binaryReader(Request.Files[0].InputStream)){fileData=binaryReader.ReadBytes(Request.Files[0].ContentLength);}//fileData是您将在第三个应用程序上发送给webservice的字节[]。我的文件设置代码如下string url=“要发布的url”;使用(var client=new WebClient()){byte[]result=client.UploadFile(url,file);string responseAsString=Encoding.Default.GetString(result);}我可以对这里的流对象做些什么吗?抱歉。。看起来这段代码将把文件保存在应用程序中,或者它正在获取应用程序中已经存在的文件并发送它。不是吗?我只有这个HttpPostedFile hpf=Request.Files[0];在我的第二份申请中。如果不在第二个应用程序中保存文件,我如何将其发布到第三个应用程序中?您应该阅读我答案中有关链接的文章。这正是你需要的。特别是第二个-我只有这个HttpPostedFile hpf=Request.Files[0];在我的第二份申请中。如果不在第二个应用程序中保存文件,我如何将其发布到第三个应用程序中?您应该阅读我答案中有关链接的文章。这正是你需要的。尤其是第二个-