首页 > 其他分享 >.Net FTP 自动创建目录/上传文件

.Net FTP 自动创建目录/上传文件

时间:2022-10-13 20:59:39浏览次数:49  
标签:FTP return string FtpWebRequest destFilePath req Net 上传 dir

//上传文件  
public static Boolean FtpUpload(string ftpPath,string localFile)  
{  
    //检查目录是否存在,不存在创建  
    FtpCheckDirectoryExist(ftpPath);  
    FileInfo fi = new FileInfo(localFile);  
    FileStream fs = fi.OpenRead();  
    long length = fs.Length;  
    FtpWebRequest req = (FtpWebRequest)WebRequest.Create(ftpServerIP + ftpPath + fi.Name);  
    req.Credentials = new NetworkCredential(ftpUserID, ftpPassword);  
    req.Method = WebRequestMethods.Ftp.UploadFile;  
    req.ContentLength = length;  
    req.Timeout = 10 * 1000;  
    try  
    {  
        Stream stream = req.GetRequestStream();  
        int BufferLength = 2048; //2K     
        byte[] b = new byte[BufferLength];  
        int i;  
        while ((i = fs.Read(b, 0, BufferLength)) > 0)  
        {  
            stream.Write(b, 0, i);  
        }  
        stream.Close();  
        stream.Dispose();  
    }  
    catch (Exception e)  
    {  
        ErrLog(e.Message + e.StackTrace);  
        return false;  
    }  
    finally  
    {  
        fs.Close();  
        req.Abort();  
    }  
    req.Abort();  
    return true;  
}  
  
//判断文件的目录是否存,不存则创建  
public static void FtpCheckDirectoryExist(string destFilePath)  
{  
    string fullDir = FtpParseDirectory(destFilePath);  
    string[] dirs = fullDir.Split('/');  
    string curDir = "/";  
    for (int i = 0; i < dirs.Length; i++)  
    {  
        string dir = dirs[i];  
        //如果是以/开始的路径,第一个为空    
        if (dir != null && dir.Length > 0)  
        {  
            try  
            {  
                curDir += dir + "/";  
                FtpMakeDir(curDir);  
            }  
            catch (Exception)  
            {}  
        }  
    }  
}  
  
public static string FtpParseDirectory(string destFilePath)  
{  
    return destFilePath.Substring(0, destFilePath.LastIndexOf("/"));  
}    
  
//创建目录  
public static Boolean FtpMakeDir(string localFile)  
{  
    FtpWebRequest req = (FtpWebRequest)WebRequest.Create(ftpServerIP + localFile);  
    req.Credentials = new NetworkCredential(ftpUserID, ftpPassword);  
    req.Method = WebRequestMethods.Ftp.MakeDirectory;  
    try  
    {  
        FtpWebResponse response = (FtpWebResponse)req.GetResponse();  
        response.Close();  
    }  
    catch (Exception)  
    {  
        req.Abort();  
        return false;  
    }  
    req.Abort();  
    return true;  
}  

  

标签:FTP,return,string,FtpWebRequest,destFilePath,req,Net,上传,dir
From: https://www.cnblogs.com/hahahayang/p/16789602.html

相关文章

  • 陆地观测卫星数据服务(CRESDA)订单ftp地址错误—已解决不能下载问题
    陆地观测卫星数据服务订单ftp地址错误问题:本人在陆地观测卫星数据网站上申请GF1-WFV10幅数据,订单完成后返回的FTP地址出现无法连接服务器现象。(数据订单申请已通过)一、情......
  • Deep Q Network
    DQN论文简介两篇内容大致相同,可直接看第二篇,更详细DQN神经网络部分模型结构整体结构伪代码代码解释初始化replaymemoryD和它的大小N初始化Q函数和Po......
  • 如何从Mac OS X Catalina将IPA文件上传到App Store
    本文介绍了如何从MacOSXCatalina将IPA文件上传到AppStore的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!问题描述我刚刚在AppleD......
  • NetBSD安装中的一些问题总结
    参考文档:https://www.cioworld.cn/guide/install/netbsd-quick-installhttps://www.netbsd.org/docs/guide/en/最近迷上了BSD系统,玩了一阵子FreeBSD之后,发现FreeBSD对ar......
  • netty 断点续传与分片下载
    参考文档:java视频上传,播放预览,解决苹果手机视频无法预览的问题_不加糖的沙的博客-CSDN博客fileex:一款基于netty、http1.1transfer-encoding:chunked、websocket实现的......
  • Typora使用 EasyBlogImageForTypora上传图片
      最近在使用Typora的过程中发现不可以直接粘贴图片,百度后发现需要配置个人图床,于是便用GitHub配置了一个,没想到这才是噩梦的开始,因为必须使用代理才能正常加载图片,也就......
  • AlexNet-文献阅读笔记
    论文介绍ImageNetClassificationwithDeepConvolutionalNeuralNetworks-AlexKrizhevsky,IlyaSutskever,andGeoffreyE.Hinton该论文是ImageNetLarge-Scale......
  • Unity关于引用.Net或其他C# dll的问题。(我是用的版本是2018.3)
      首先,因为我是用到了.NetWinForm中的中的一个System.Windows.WinForms中的类(OpenFileDialog)就是打开就是选择资源的一个对话框。ALT+Enter可以直接在VS中引用,但是......
  • ASP.NET 6 修改 WebRoot 路径
    问题最近的项目中需要修改WebRoot路径,按照老方法发现报异常,于是Google得知相关方法在ASP.NET6中有所修改。代码ASP.NET5publicstaticIHostBuilderCreateH......
  • .net控制器接口为什么要用 async/await?
    避免阻塞调用ASP.NETCore应用应设计为可同时处理许多请求。异步API允许较小线程池处理数千个并发请求,无需等待阻塞调用。线程可以处理另一个请求,而不是等待长时间运......