ftp 上传与下载

//上传

ftpmg.Upload("", DateTime.Now.ToString("yyyyMMddhhmmss"));

//下载

ftpmg.Download(@"E:\", "tt.txt", out errorinfo);

  1   string ftpServerIP;
  2         string ftpUserID;
  3         string ftpPassword;
  4         FtpWebRequest reqFTP;
  5         private void Connect(String path)//连接ftp
  6         {
  7             // 根据uri创建FtpWebRequest对象
  8             reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(path));
  9             // 指定数据传输类型
 10             reqFTP.UseBinary = true;
 11             // ftp用户名和密码
 12             reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
 13         }
 14         public FtpManager(string ftpServerIP, string ftpUserID, string ftpPassword)
 15         {
 16             this.ftpServerIP = ftpServerIP;
 17             this.ftpUserID = ftpUserID;
 18             this.ftpPassword = ftpPassword;
 19
 20         }
 21
 22
 23
 24
 25         public void Upload(string path, string filename) //上面的代码实现了向ftp服务器上载文件的功能
 26         {
 27             FileInfo fileInf = new FileInfo(filename);
 28             string uri = "";
 29             if (path != "")
 30                 uri = "ftp://" + ftpServerIP + "/" + path + "/" + fileInf.Name;
 31             else
 32                 uri = "ftp://" + ftpServerIP + "/" + fileInf.Name;
 33
 34
 35             Connect(uri);//连接
 36
 37             // 默认为true,连接不会被关闭
 38             // 在一个命令之后被执行
 39             reqFTP.KeepAlive = false;
 40
 41             // 指定执行什么命令
 42             reqFTP.Method = WebRequestMethods.Ftp.UploadFile;
 43
 44             // 上传文件时通知服务器文件的大小
 45             reqFTP.ContentLength = fileInf.Length;
 46
 47             // 缓冲大小设置为kb
 48             int buffLength = 2048;
 49
 50             byte[] buff = new byte[buffLength];
 51             int contentLen;
 52
 53             // 打开一个文件流(System.IO.FileStream) 去读上传的文件
 54             FileStream fs = fileInf.OpenRead();
 55
 56             Stream strm = null;
 57             try
 58             {
 59                 // 把上传的文件写入流
 60                 strm = reqFTP.GetRequestStream();
 61                 // 每次读文件流的kb
 62                 contentLen = fs.Read(buff, 0, buffLength);
 63
 64                 // 流内容没有结束
 65                 while (contentLen != 0)
 66                 {
 67                     // 把内容从file stream 写入upload stream
 68                     strm.Write(buff, 0, contentLen);
 69
 70                     contentLen = fs.Read(buff, 0, buffLength);
 71                 }
 72
 73                 // 关闭两个流
 74                 strm.Close();
 75                 fs.Close();
 76             }
 77             catch (Exception ex)
 78             {
 79                 Log.WriteLogD("上传出错:" + ex.Message);
 80                 Console.WriteLine(ex.Message);
 81                 throw ex;
 82             }
 83             finally
 84             {
 85
 86                 fs.Close();
 87             }
 88         }
 89
 90         public bool Download(string filePath, string fileName, out string errorinfo)/**/////上面的代码实现了从ftp服务器下载文件的功能
 91         {
 92
 93
 94             try
 95             {
 96                 String onlyFileName = Path.GetFileName(fileName);
 97                 string newFileName = filePath + "\\" + onlyFileName;
 98                 if (File.Exists(newFileName))
 99                 {
100                     errorinfo = string.Format("本地文件{0}已存在,无法下载", newFileName);
101                     return false;
102
103                 }
104                 string url = "ftp://" + ftpServerIP + "/" + fileName;
105                 Connect(url);//连接
106
107                 reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
108
109                 FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();
110
111                 Stream ftpStream = response.GetResponseStream();
112
113                 long cl = response.ContentLength;
114
115                 int bufferSize = 2048;
116
117                 int readCount;
118
119                 byte[] buffer = new byte[bufferSize];
120
121                 readCount = ftpStream.Read(buffer, 0, bufferSize);
122                 FileStream outputStream = new FileStream(newFileName, FileMode.Create);
123
124                 while (readCount > 0)
125                 {
126                     outputStream.Write(buffer, 0, readCount);
127
128                     readCount = ftpStream.Read(buffer, 0, bufferSize);
129                 }
130
131                 ftpStream.Close();
132
133                 outputStream.Close();
134
135                 response.Close();
136                 errorinfo = "";
137                 return true;
138             }
139             catch (Exception ex)
140             {
141                 Log.WriteLogD("下载出错:" + ex.Message);
142                 errorinfo = string.Format("因{0},无法下载", ex.Message);
143                 return false;
144             }
145         }
146       

时间: 2024-10-25 05:13:25

ftp 上传与下载的相关文章

android实现ftp上传、下载,支持文件夹

提供一个android手机实现ftp上传.下载的demo地址: http://download.csdn.net/detail/a358763471/8728637

Java中向ftp上传、下载文件

最近的一个项目跟ftp打交道很多,经常需要向ftp上传.下载文件,现在总结一下公共方法. 上传 /** * 文件上传 * * @param ip * host * @param port * 端口 * @param userName * 用户名 * @param passWord * 密码 * @param localpath * 上传文件在本地磁盘路径 * @param fileName * 文件名 * @param remotePath * 文件要上传到ftp服务器的路径 * @throws

ftp上传与下载

在企业级应用系统中,文件上传与下载是最常用的功能之一.当然,这些文件也是有存储周期,根据业务需要而定. 驾驶员培训管理系统(简称驾培系统)需要判断学员学时的有效性,通过学时记录仪,采集学员在教练车中里照片, 上传到web服务器中,由web服务器上传到文件服务器,,比便做人脸比对..为保证学时的实时性,这期间会产生多次比对,当 然也会产生许多学员人脸照片.为方便管理这些照片,我们会采用分层级目录来存放照片. 这里主要介绍基于commons-net实现ftp创建文件夹.上传.下载功能. 创建文件夹

java FTP上传和下载文件

1 package com.ftp; 2 3 /** 4 * ftp链接常量 5 * 6 */ 7 public class Ftp { 8 9 private String ipAddr;//ip地址 10 11 private Integer port;//端口号 12 13 private String userName;//用户名 14 15 private String pwd;//密码 16 17 private String path;//aaa路径 18 19 public St

Java 利用FTP上传,下载文件,遍历文件目录

Java实现FTP上传下载文件的工具包有很多,这里我采用Java自带的API,实现FTP上传下载文件.另外JDK1.7以前的版本与其之后版本的API有了较大的改变了. 例如: JDK1.7之前 JDK1.7 ftpClient = new FtpClinet() ftpClient = FtpClient.create(ip) ftpclient.login(user,password) ftpclient.login(user,null,password) ftpclient.binary()

FTP上传和下载文件的应用

FTP(File Transfer Protocol)协议主要用来在网络上进行文件传输.FTP通讯除了有一个默认的端口21外,还有其他端口,同城两个端口同时进行数据传输.一个是默认的端口(通常为21),主要进行控制连接,即进行命令协议及服务器端响应码的传输.另一个非标准端口主要进行数据,上传下载文件等.具体上传.下载代码如下 import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundExcept

使用python操作FTP上传和下载

Python中默认安装的ftplib模块定义了FTP类,其中函数有限,可用来实现简单的ftp客户端,用于上传或下载文件,函数列举如下 ftp登陆连接 from ftplib import FTP #加载ftp模块 ftp=FTP() #设置变量 ftp.set_debuglevel(2) #打开调试级别2,显示详细信息 ftp.connect("IP","port") #连接的ftp sever和端口 ftp.login("user","

C# ftp 上传、下载、删除

1 public class FtpHelper 2 { 3 public static readonly FtpHelper Instance = new FtpHelper(); 4 5 /// <summary> 6 /// 取得文件名 7 /// </summary> 8 /// <param name="ftpPath">ftp路径</param> 9 /// <returns></returns> 10

python中FTP上传和下载

写这篇文章方便以后遇到需要定期去上传或下载时直接可以此简单模板. 1.python中FTP上传 #/usr/bin/python  # -*- coding: utf-8 -*-  import datetime import time import sys import os import ftplib def Upload_File():     ftp = ftplib.FTP()     TODAY=time.strftime('%Y-%m-%d')     FTPIP= "10.10.

[Android中级]使用Commons-net-ftp来实现FTP上传、下载的功能

本文属于学习分享,如有雷同纯属巧合 利用业余时间.学习一些实用的东西,假设手又有点贱的话.最好还是自己也跟着敲起来. 在android上能够通过自带的ftp组件来完毕各种功能.这次是由于项目中看到用了Commons-net-ftp的包完毕的,所以就以此试试手. 首先,代码中有所參考借鉴了:Android中使用Apache common ftp进行下载文件 博文 这次是分享关于在android上使用FTP协议(文件传输协议)进行文件的下载.上传的功能.我们能够先了解一下,FTP和HTTP一样都是I