asp.net FTP上传(解决本地路径问题-用FileUpload来获取本地路径)

asp.net_FTP上传(解决本地路径问题-用FileUpload来获取本地路径)





    public static string ftpHost = "ftp-my.vhostgo.com";//FTP的ip地址或域名 

    public static string ftpUserID = "账户";//ftp账号
    public static string ftpPassword = "密码";//ftp密码





    private void FtpUpload()
    {
        string ftpServerIP = ftpHost;
        string uri = "ftp://" + ftpHost + "/" + "TheName";
        FtpWebRequest reqFTP;
        // 根据uri创建FtpWebRequest对象 
        reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://" + ftpServerIP + "/" + "TheName"));//fileInf.Name
        // ftp用户名和密码 
        reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
        // 默认为true,连接不会被关闭 
        // 在一个命令之后被执行 
        reqFTP.KeepAlive = false;
        // 指定执行什么命令 
        reqFTP.Method = WebRequestMethods.Ftp.UploadFile;
        // 指定数据传输类型 
        reqFTP.UseBinary = true;
        // 上传文件时通知服务器文件的大小 
        reqFTP.ContentLength = FileUpload1.PostedFile.ContentLength;
        // 缓冲大小设置为2kb 
        int buffLength = 2048;
        byte[] buff = new byte[buffLength];
        int contentLen;
        // 打开一个文件流 (System.IO.FileStream) 去读上传的文件 
        Stream fs = FileUpload2.PostedFile.InputStream;//fileInf.OpenRead();
        try
        {
            // 把上传的文件写入流 
            Stream strm = reqFTP.GetRequestStream();
            // 每次读文件流的2kb 
            contentLen = fs.Read(buff, 0, buffLength);
            // 流内容没有结束 
            while (contentLen != 0)
            {
                // 把内容从file stream 写入 upload stream 
                strm.Write(buff, 0, contentLen);
                contentLen = fs.Read(buff, 0, buffLength);
            }
            // 关闭两个流 
            strm.Close();
            fs.Close();
        }
        catch
        {
        }
    }



这里提到  本地文件的文件名 我们怎么弄呢?就靠 FileUpload2 的文件名 来弄吧




为了美观点:我们把FileUpload2 给隐藏起来


<asp:FileUpload ID="FileUpload2" runat="server" onchange="onFileChange2(this);" style="display:none" />



然后给 按钮或者Textbox1控件添加个 JS点击事件 


<asp:TextBox ID="TextBox2" runat="server"  placeholder="这里点击选择上传文件"  onclick="javascript:document.getElementById('FileUpload2').click();" ></asp:TextBox>



然后顺便给TEXTBOX2赋值




                          <script type="text/javascript">
                          function onFileChange2(sender) {

                              document.getElementById("TextBox2").value = document.getElementById("FileUpload2").value;


                          }

                         </script>







上面搞完了 我们就来上传文件到FTP吧



    protected void Button1_Click(object sender, EventArgs e)
    {
        FtpUpload();


    }

}




webform
桂ICP备16004754号