下面的是我写的实现本地上传代码,有没有高人指点下实现异地上传该怎么写
protected void Add_Bt_Click(object sender, EventArgs e)
    {
        int len = 0;
        //  FileStr = Server.MapPath("/AdminWebJxt4.0/uploadfile/officefile/");//虚拟路径
        FileStr = "~/uploadfile/officefile/";
        //  FileStr = "/uploadfile/officefile/";
        NewFile = "";
        NewFile = userid_hf.Value.ToString() + DateTime.Now.ToString("yyyymmddhhmmss").ToString();//文件新名
        
        fileexi = "";
        OldFile = "";        OldFile = this.FileUpload1.FileName;//原文件名
        Oldfile_hf.Value = OldFile;
        if (OldFileList == "")
        {
            OldFileList = this.FileUpload1.FileName;//原文件名串
            OldFileList1 = this.FileUpload1.FileName;        }
        else
        {
            OldFileList = OldFileList + "|" + this.FileUpload1.FileName;//原文件名串            OldFileList1 = OldFileList1 + "<br>" + this.FileUpload1.FileName;        }
        len = OldFile.IndexOf('.');
        //fileexi = OldFile.Substring(len, OldFile.Length - OldFile.IndexOf('.'));//文件扩展名        fileexi = OldFile.Substring(OldFile.Length - 3).ToString();        NewFile = NewFile + "." + fileexi;
        if (NewFileList == "")
        {
            NewFileList = NewFile;//原文件名串        }
        else
        {
            NewFileList = NewFileList + "|" + NewFile;//原文件名串        }        string uploadfileurl = "";
        uploadfileurl = FileStr + NewFile;
        string mPath = Server.MapPath(FileStr);        if (fileexi != ".asp" && fileexi != ".jsp" && fileexi != ".php")
        {
            FileUpload1.PostedFile.SaveAs(@mPath + NewFile);//上传
            //  FileUpload1.PostedFile.
            this.lblfilelist.Text = OldFileList1.ToString();        }
        else
        {
            Response.Write("<script language='javascript'>alert('对不起!此文件不能上传');history.go(-1);</script>");
        }
    }

解决方案 »

  1.   

    用FTP ,webclient类可以解决你的问题
      

  2.   


    请大侠指点下,到底具体的该怎么实现?对FTP ,webclient类不大熟悉  ,不知道该怎么用
      

  3.   


    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Web;
    using System.Web.SessionState;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;
    using System.IO;
    using System.Net;
    using System.Text;namespace eMeng.Exam
    {
    /// <summary>
    /// GetPageHtml 的摘要说明。
    /// </summary>
    public class GetPageHtml : System.Web.UI.Page
    {
    protected System.Web.UI.WebControls.Button WebClientButton;
    protected System.Web.UI.WebControls.Button WebRequestButton;
    protected System.Web.UI.WebControls.TextBox ContentHtml;
    protected System.Web.UI.WebControls.TextBox UrlText;
    private string PageUrl = "";private void Page_Load(object sender, System.EventArgs e)
    {}#region Web Form Designer generated code
    override protected void OnInit(EventArgs e)
    {
    InitializeComponent();
    base.OnInit(e);
    }/// <summary>
    /// 设计器支持所需的方法 - 不要使用代码编辑器修改
    /// 此方法的内容。
    /// </summary>
    private void InitializeComponent()

    this.WebClientButton.Click += new System.EventHandler(this.WebClientButton_Click);
    this.WebRequestButton.Click += new System.EventHandler(this.WebRequestButton_Click);
    this.Load += new System.EventHandler(this.Page_Load);
    }
    #endregionprivate void WebClientButton_Click(object sender, System.EventArgs e)
    {
    PageUrl = UrlText.Text;
    WebClient wc = new WebClient();
    wc.Credentials = CredentialCache.DefaultCredentials;///方法一:
    Byte[] pageData = wc.DownloadData(PageUrl);
    ContentHtml.Text = Encoding.Default.GetString(pageData);/// 方法二:
    /// ***************代码开始**********
    /// Stream resStream = wc.OpenRead(PageUrl);
    /// StreamReader sr = new StreamReader(resStream,System.Text.Encoding.Default);
    /// ContentHtml.Text = sr.ReadToEnd();
    /// resStream.Close();
    /// **************代码结束********
    /// 
    wc.Dispose(); 
    }private void WebRequestButton_Click(object sender, System.EventArgs e)
    {
    PageUrl = UrlText.Text;
    WebRequest request = WebRequest.Create(PageUrl);
    WebResponse response = request.GetResponse();
    Stream resStream = response.GetResponseStream(); 
    StreamReader sr = new StreamReader(resStream, System.Text.Encoding.Default);
    ContentHtml.Text = sr.ReadToEnd();
    resStream.Close(); 
    sr.Close();
    }
    }

     
      

  4.   

    你看下这个namespace UploadFile
    {
         [STAThread]
        static void Main() 
        {
          Application.Run(new Form1());
        }    /// <summary>
        /// .NET SDK 上面的打开文件的类
        /// </summary>    private FileStream OpenFile()
        {
          OpenFileDialog dlgOpenFile = new OpenFileDialog();
          dlgOpenFile.ShowReadOnly = true;
          if(dlgOpenFile.ShowDialog() == DialogResult.OK)
          {
            if(dlgOpenFile.ReadOnlyChecked == true)
            {
              return (FileStream)dlgOpenFile.OpenFile();        }
            else
            {
              string path = dlgOpenFile.FileName;
              return new FileStream(path, System.IO.FileMode.Open, 
                System.IO.FileAccess.ReadWrite);
            }
          }
          return null;
        }    private void button2_Click(object sender, System.EventArgs e)
        {
          OpenFileDialog dlgOpenFile = new OpenFileDialog();
          dlgOpenFile.InitialDirectory = @"C:\";
          dlgOpenFile.ShowReadOnly = false;
          dlgOpenFile.ReadOnlyChecked = true;
          dlgOpenFile.Filter = "所有文件 (*.*)|*.*";
          if(dlgOpenFile.ShowDialog() == DialogResult.OK)
          {
            if(dlgOpenFile.ReadOnlyChecked == true)
            {
              txtFileName.Text = dlgOpenFile.FileName.ToString();
            }
          }
        }    private void button1_Click(object sender, System.EventArgs e)
        {
          // 需要注意的是:txtServerPath文件夹有匿名可写的权限。
          // 可以自己定义新文件名字
          if(txtFileName.Text.Trim() == "" || txtServerPath.Text.Trim() == "")
          {
            MessageBox.Show("请输入你要上载的文件名字!","错误:", MessageBoxButtons.OK,
                                                             MessageBoxIcon.Information); 
          }
          else
          {
            /// 得到文件名,文件扩展名字,服务器路径
            string fileNamePath = txtFileName.Text.Trim();
            string uriString = txtServerPath.Text.Trim();
            string fileName = fileNamePath.Substring(fileNamePath.LastIndexOf("\\") + 1); 
            string fileNameExt = fileName.Substring(fileName.LastIndexOf(".") + 1);
            if(uriString.EndsWith("/") == false) uriString = uriString + "/";        uriString = uriString + fileName;
            /// 创建WebClient实例
            WebClient myWebClient = new WebClient();
            myWebClient.Credentials = CredentialCache.DefaultCredentials;        // 要上传的文件
            FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read);
            //FileStream fs = OpenFile();
            BinaryReader r = new BinaryReader(fs);
            try
            {
              //使用UploadFile方法可以用下面的格式
              //myWebClient.UploadFile(uriString,"PUT",fileNamePath);
              byte[] postArray = r.ReadBytes((int)fs.Length);
              Stream postStream = myWebClient.OpenWrite(uriString,"PUT");
              if(postStream.CanWrite)
              {
                postStream.Write(postArray,0,postArray.Length);
                label1.Text = fileName + "上传成功!";
              }
              else
              {
                label1.Text = "文件目前不可写!";
              }
              postStream.Close();
              linkLabel1.Text = "查看上载的文件";
              for(int i = linkLabel1.Links.Count - 1;i>-1;i--)
              linkLabel1.Links.Remove(linkLabel1.Links[i]);
              linkLabel1.Links.Add(0,linkLabel1.Text.Length,uriString);          
            }
            catch(WebException errMsg)
            {
              label1.Text="上传失败:" + errMsg.Message;
            }
          }
        }    private void linkLabel1_LinkClicked(object sender, System.Windows.Forms.LinkLabelLinkClickedEventArgs e)
        {
          this.WindowState = FormWindowState.Minimized;
          this.linkLabel1.Links[linkLabel1.Links.IndexOf(e.Link)].Visited = true;
          string target = e.Link.LinkData as string;
          if(null != target)
          {
            System.Diagnostics.Process.Start(target);
          }
          else
          {    
            MessageBox.Show("请用浏览器访问:" + target);
          }
        }    private void Form1_Resize(object sender, System.EventArgs e)
        {
          if(this.WindowState == FormWindowState.Maximized) this.WindowState = FormWindowState.Normal;
        }    private void button1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
        {
          if(txtFileName.Text.Trim() != "" && txtServerPath.Text.Trim() != "")
          label1.Text = "正在上传文件,请稍侯……!";
        }  
      }
    }