如题所示,不是asp.net中的应用,而是在visual c#中的Windows程序中实现文件的上传功能。

解决方案 »

  1.   

    相当于自己做一个ftp客户端么?
      
    *****************************************************************************
    欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码) http://feiyun0112.cnblogs.com/
      

  2.   

    using System.Net;
    WebClient MyWebClient = new WebClient();
    MyWebClient.UploadFile(URL, 本地文件路径);
      

  3.   


    using System;
    using System.Data;
    using System.Data.SqlClient;
    using CA.Components;        //全部在组件名称空间下namespace CA.Components
    {
          public class General
        {
            private string FilePath; //文件路径        //定义一个枚举用来存放文件的信息        
            public enum File
            {
                FILE_SIZE ,        //大小
                FILE_POSTNAME,    //
                FILE_SYSNAME ,
                FILE_ORGINNAME,
                FILE_PATH
            };
            //构造函数
            public general()
            {
                //在WEB.CONFIG中设定AppSettings["filepath"],用于存放文件的路径。
                FilePath = System.Configuration.ConfigurationSettings.AppSettings["filepath"];
            }        /// <summary>
            /// 上传文件通用函数,此方法为静态,系统任何时候均可调用。
            /// </summary>
            /// <param name="file">参数为页面的FILE控件对象</param>
            /// <returns></returns>
            public static string[] UploadFile(HtmlInputFile file)
            {
                string[] arr = new String[5];
                //通过系统时间生成文件名,此功能可以封闭掉,不过中文长文件名支持的不好。
                string FileName = DateTime.Now.ToString().Replace(" ","").Replace(":","").Replace("-","");
                string FileOrginName = file.PostedFile.FileName.Substring(file.PostedFile.FileName.LastIndexOf("\\")+1);
                if(file.PostedFile.ContentLength<=0)
                    return null; 
                string  postFileName;
                string path = new general().FilePath+"\\";
                try
                {
                    int pos = file.PostedFile.FileName.LastIndexOf(".")+1;
                    postFileName = file.PostedFile.FileName.Substring(pos,file.PostedFile.FileName.Length-pos);
                    file.PostedFile.SaveAs(path+FileName+"."+postFileName);
                }
                catch(Exception exec)
                {
                    throw(exec);
                }
      
                double unit = 1024;
                double size =  Math.Round(file.PostedFile.ContentLength/unit,2);
                arr[(int)File.FILE_SIZE] = size.ToString();//文件大小
                arr[(int)File.FILE_POSTNAME] = postFileName;//文件类型(文件后缀名)
                arr[(int)File.FILE_SYSNAME] = FileName;//文件系统名
                arr[(int)File.FILE_ORGINNAME] = FileOrginName;//文件原来的名字
                arr[(int)File.FILE_PATH]=path+FileName+"."+postFileName;//文件路径
                return arr;
                //throw(new Exception(HtmlUtility.HtmlEncode(IDNO.PostedFile.FileName)));
            }
          }
       }
      

  4.   

    怎么让才能在WinForm里面模拟想Web Form POST 数据呢?System.Net命名空间里面提供了两个非常有用的类,一个是WebClient,另外一个是HttpWebRequest类。如果我们不需要通过代理服务器来上传文件,那么非常简单,只需要简单的调用WebClient.UploadFile方法就能实现上传文件:private void button1_Click(object sender, System.EventArgs e)
    {
    WebClient myWebClient = new WebClient();myWebClient.UploadFile("http://localhost/UploadFileWeb/WebForm1.aspx","POST",@"D:\Temp\Java\JavaStart\JavaStart2.exe");
    }
      

  5.   

    使用using System.Net; 
    WebClient MyWebClient = new WebClient(); 
    MyWebClient.UploadFile(URL, 本地文件路径);
    为什么出现错误“System.Net.WebException: 远程服务器返回错误: (405) 不允许的方法。”呢?
      

  6.   

    webclient提示出错可能的原因有:
    指定的URI无效或不存在,
    本地文件路径 为 空引用,为 Empty、包含无效字符或者不存在,
    上载文件时出错。
    承载资源的服务器没有响应。
      

  7.   

    知道了,出现“System.Net.WebException: 远程服务器返回错误: (405) 不允许的方法。”的原因是没有给虚拟目录设置写写入权限。MyWebClient.UploadFile(URL, "PUT",本地文件路径)可以实现。