头发很旺盛 2019-12-09 18:01 采纳率: 0%
浏览 398

c#通过ftp上传文件返回227,代码如下

if(Upload("C:\\Users\\Administrator.AFABW-704091758\\Desktop\\123.jpg", "ip:60021/home/pdsftp"))
            {
                this.textBox1.Text = "123";
            }
            else
            {
                this.textBox1.Text = "456";
            }
        /// <summary>
        /// 上传文件
        /// </summary>
        /// <param name="localpath">上传文件的全路径 例@"D:\123.txt"</param>
        /// <param name="ftppath"></param>
        /// <returns></returns>
        public bool Upload(string localpath, string ftppath)
        {
            bool bol = false;
            try
            {
                FileInfo fileInf = new FileInfo(localpath);
                //替换符号
                ftppath = ftppath.Replace("\\", "/");
                //组合ftp上传文件路径
                string uri = "ftp://" + ftppath + "/" + fileInf.Name;
                // 根据uri创建FtpWebRequest对象
                FtpWebRequest reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri));
                // 指定数据传输类型
                reqFTP.UseBinary = true;
                // ftp用户名和密码
                reqFTP.Credentials = new NetworkCredential("username", "password");
                // 默认为true,连接不会被关闭
                // 在一个命令之后被执行
                reqFTP.KeepAlive = false;
                // 指定执行什么命令
                reqFTP.Method = WebRequestMethods.Ftp.UploadFile;
                // 上传文件时通知服务器文件的大小
                reqFTP.ContentLength = fileInf.Length;
                reqFTP.UsePassive = false;
                // 缓冲大小设置为kb
                int buffLength = 2048;
                byte[] buff = new byte[buffLength];
                int contentLen;
                // 打开一个文件流(System.IO.FileStream) 去读上传的文件
                FileStream fs = fileInf.OpenRead();
                try
                {
                    // 把上传的文件写入流
                    Stream strm = reqFTP.GetRequestStream();
                    // 每次读文件流的kb
                    contentLen = fs.Read(buff, 0, buffLength);
                    // 流内容没有结束
                    while (contentLen != 0)
                    {
                        // 把内容从file stream 写入upload stream
                        strm.Write(buff, 0, contentLen);
                        contentLen = fs.Read(buff, 0, buffLength);
                        bol = true;
                    }
                    // 关闭两个流
                    strm.Close();
                    fs.Close();
                }
                catch (Exception ex)
                {
                    MessageBox.Show("上传文件失败,失败原因;" + ex.Message);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("上传文件失败,失败原因;" + ex.Message);
            }
            return bol;
        }

不加这个返回227,按照网上说的加上后返回500
图片说明

  • 写回答

1条回答 默认 最新

  • threenewbee 2019-12-10 00:27
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 Qt下使用tcp获取数据的详细操作
  • ¥15 idea右下角设置编码是灰色的
  • ¥15 全志H618ROM新增分区
  • ¥15 在grasshopper里DrawViewportWires更改预览后,禁用电池仍然显示
  • ¥15 NAO机器人的录音程序保存问题
  • ¥15 C#读写EXCEL文件,不同编译
  • ¥15 MapReduce结果输出到HBase,一直连接不上MySQL
  • ¥15 扩散模型sd.webui使用时报错“Nonetype”
  • ¥15 stm32流水灯+呼吸灯+外部中断按键
  • ¥15 将二维数组,按照假设的规定,如0/1/0 == "4",把对应列位置写成一个字符并打印输出该字符