ASP.net(C#)上传文件到ftp服务器上,并修改文件名称。

使用Asp.net的FileUpload控件,上传文件到ftp服务器上。

aspx页面代码如下:

<tr style="" >
                  <td style="width: 20%" class="tdbgleft" align="right">
                    <asp:Label ID="Label4"  ForeColor="#135294" runat="server" Text='上传的apk:' />
                    </td>
                    <td style="width: 30%" class="tdbgright" align="left" colspan="3">
                        <asp:FileUpload ID="FileUpload1" runat="server" />
                        <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="上传" /> 
                       
                     </td>
                </tr>

c#后台代码:

 #region 上传文件到ftp服务器
        protected void Button1_Click(object sender, EventArgs e)
        {
            try
            {
                if (FileUpload1.HasFile)
                {
                    /**********首先将apk文件上传到IIS服务器上*********/
                    string fileExrensio = System.IO.Path.GetExtension(FileUpload1.FileName).ToString();
                    string FileType = FileUpload1.PostedFile.ContentType;
                    string UploadURL = Server.MapPath("~/upload/");//上传的目录

                    if (!System.IO.Directory.Exists(UploadURL))//判断文件夹是否已经存在
                    {
                        System.IO.Directory.CreateDirectory(UploadURL);//创建文件夹
                    }
                    //apk版本号
                    string version = this.version.Text;
                    string refilename = "demo_" + version + ".apk";

                    //保存时,修改名称 
                    FileUpload1.PostedFile.SaveAs(UploadURL + refilename);

                    /*************将IIS服务器上的apk文件上传到ftp服务器上********************/

                    string oldfilename = System.IO.Path.GetFileName(FileUpload1.FileName).ToString();//文件名称
                    //string filename = FileUpload1.PostedFile.FileName; //获取文件所在目录; //获取文件的绝对路径//本地文件,需要上传的文件
                    string filename = SQLClass.uploadurl + refilename;

                    FileInfo fileInf = new FileInfo(filename);

                    string uri = string.Format("ftp://{0}/{1}/{2}", SQLClass.ftpServerIP, SQLClass.serverDir, fileInf.Name);
                    FtpWebRequest reqFTP;

                    // 根据uri创建FtpWebRequest对象 
                    reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri));


                    // ftp用户名和密码
                    reqFTP.Credentials = new NetworkCredential(SQLClass.ftpUserID, SQLClass.ftpPassword);

                    // 默认为true,连接不会被关闭
                    // 在一个命令之后被执行
                    reqFTP.KeepAlive = false;

                    // 指定执行什么命令
                    reqFTP.Method = WebRequestMethods.Ftp.UploadFile;

                    // 指定数据传输类型
                    reqFTP.UseBinary = true;

                    // 上传文件时通知服务器文件的大小
                    reqFTP.ContentLength = fileInf.Length;

                    // 缓冲大小设置为2kb
                    int buffLength = 2048;

                    byte[] buff = new byte[buffLength];
                    int contentLen;

                    // 打开一个文件流 (System.IO.FileStream) 去读上传的文件
                    FileStream fs = 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();

                        //重命名apk文件名
                        string version1 = this.version.Text;//apk版本号
                        string newFilename = "demo_" + version1 + ".apk";
                        ReName(oldfilename, newFilename, uri);

                        if (System.IO.File.Exists(filename))//判断文件夹是否已经存在
                        {
                            File.Delete(filename);
                        }

                        Response.Write("<script >window.onload = function() {alert('上传成功!');}</script>");
                    }
                    catch (Exception ex)
                    {
                        Response.Write("Upload Error:" + ex.Message);
                        if (System.IO.File.Exists(filename))//判断文件夹是否已经存在
                        {
                            File.Delete(filename);
                        }
                        Response.Write("<script >window.onload = function() {alert('上传失败!');}</script>");
                    }
                }
                else
                {
                    Response.Write("<script >window.onload = function() {alert('请选择文件!');}</script>");
                }
            }
            catch (Exception exp)
            {
                Response.Write("Upload Error:" + exp.Message);
                Response.Write("<script >window.onload = function() {alert('上传失败!');}</script>");
            }
           
        }
        #endregion

        #region 上传文件到ftp,给文件改名称
        /// <summary>
        /// 改名
        /// </summary>
        /// <param name="currentFilename"></param>
        /// <param name="newFilename"></param>
        public void ReName(string currentFilename, string newFilename,string uri)
        {
            FtpWebRequest reqFTP;
            try
            {
                reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri));
                reqFTP.Method = WebRequestMethods.Ftp.Rename;
                reqFTP.RenameTo = newFilename;
                reqFTP.UseBinary = true;
                reqFTP.Credentials = new NetworkCredential(SQLClass.ftpUserID, SQLClass.ftpPassword);
                FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();
                Stream ftpStream = response.GetResponseStream();

                ftpStream.Close();
                response.Close();
            }
            catch (Exception ex)
            {
                Response.Write("<script >window.onload = function() {alert('重命名文件失败!');}</script>");
            }
        }
        #endregion 

SQLClass.cs 参数配置


        //public static string ftpServerIP = "192.168.0.2";
        //public static string ftpUserID = "username";//用户名
        //public static string ftpPassword = "password";//密码
        //public static string serverDir = "uploadfile"; //上传到ftp服务器的目录,必须存在

        //测试
        //public static string uploadurl = @"D:\项目名称\upload\"; 


©️2020 CSDN 皮肤主题: 大白 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值