C# 上传文件至远程服务器

C# 上传文件至远程服务器(适用于桌面程序及web程序)

2009-12-30 19:21:28|  分类: C#|举报|字号 订阅

最近几天在玩桌面程序,在这里跟大家共享下如何将本地文件上传到远程服务器上面。

注意,我在这里使用的是WebClient而不是ftp

首先,我们先来定义一个类UpLoadFile,这个类就是文件上传类。代码如下:

public void UpLoadFile(string fileNamePath, string uriString, bool IsAutoRename)

{

int indexOf = 0;

if (fileNamePath.Contains(@"\"))

{

indexOf = fileNamePath.LastIndexOf(@"\");

}

else if (fileNamePath.Contains("/"))

{

indexOf = fileNamePath.LastIndexOf("/");

}

string fileName = fileNamePath.Substring(indexOf + 1);

string NewFileName = fileName;

if (IsAutoRename)

{

NewFileName = DateTime.Now.ToString("yyMMddhhmmss") + DateTime.Now.Millisecond.ToString() + fileNamePath.Substring(fileNamePath.LastIndexOf("."));

}

string fileNameExt = fileName.Substring(fileName.LastIndexOf(".") + 1);

if (uriString.EndsWith("/") == false) uriString = uriString + "/";

uriString = uriString + NewFileName;

/// 创建WebClient实例

WebClient myWebClient = new WebClient();

myWebClient.Credentials = CredentialCache.DefaultCredentials;

// 要上传的文件

FileStream fs = new FileStream(fileNamePath, FileMode.Open, FileAccess.Read);

//FileStream fs = OpenFile();

BinaryReader r = new BinaryReader(fs);

byte[] postArray = r.ReadBytes((int)fs.Length);

Stream postStream = myWebClient.OpenWrite(uriString, "PUT");

try

{

//使用UploadFile方法可以用下面的格式

//myWebClient.UploadFile(uriString,"PUT",fileNamePath);

if (postStream.CanWrite)

{

postStream.Write(postArray, 0, postArray.Length);

postStream.Close();

fs.Dispose();

}

else

{

postStream.Close();

fs.Dispose();

}

}

catch (Exception err)

{

postStream.Close();

fs.Dispose();

throw err;

}

finally

{

postStream.Close();

fs.Dispose();

}

}

好了,定义好这个类之后就看我们怎么调用它了。在这里我给出一个例子:

单击某个按钮事件:

private void center_Click(object sender, EventArgs e)

{

//上传文件

//得到文件名,文件扩展名,服务器路径

string filePath = filename.Text; //需要上传的文件,在这里可以根据需要采用OpenFileDialog来获取文件

string server = @"http://www.thylx.com/”;   //上传路径

//创建webclient实例

WebClient myWebClient = new WebClient();

try

{

//使用Uploadfile方法上传

UpLoadFile(filePath, server, true);

MessageBox.Show("上传成功", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information);

}

catch (Exception ex)

{

MessageBox.Show(ex.Message);

return;

}

}

这样,我们就可以把选择的文件上传到远程的服务器上面了。

注意:我们配置的服务器的根目录必须在文件系统中具有写入权限,并且在IIS中的配置具有写入权限。

常见错误举例:

405错误:本错误为获取的本地文件路径出现问题或是在远程机不具备写入权限

解决办法:检测文件路径,配置远程服务器中该文件具有写入权限(文件系统跟IIS服务器)

409错误:本错误为远程服务器中不具备此目录

解决办法:在远程机子中新建相应目录即可。

时间: 2024-12-18 17:06:57

C# 上传文件至远程服务器的相关文章

git 上传文件到远程服务器

当你想要上传文件到git服务器上,需要做一下流程: 一开始走的流程是:1.本地初始化一个git库2.关联远程库 1.本地初始化一个git库 在你要上传的文件夹中打开命令窗口:git init:然后他会自动生成.git文件 2.关联远程库:命令行:git remote add origin xxxxx 3.进入克隆下来的文件夹:cd test2(这里一定要进入文件夹,不然会报很多错误,等下下面有报错的问题) 4.先提交文件 git add .   (这里的  .  是指提交全部文件) 5.ls (

php - ftp 上传文件到远程服务器

ccentos7服务器 ======================== 一.安装vsftpd及ftp命令 yum install vsftpd -y yum install ftp -y 二.vsftpd服务器的配置文件 实现在开启防火墙和SELinux情况下,实现匿名用户的登录,可以上传下载,可以创建目录,创建权限掩码为022,可以删除文件,最大上传速度为100kbit/s. vsftpd服务器的主要配置文件是/etc/vsftpd/vsftpd.conf. 1.服务器端设置 1.1修改配置

putty windows上传文件到linux服务器 & 从linux服务器 下载文件到 windows

从putty官网下载putty软件:putty.exepscp.exepsftp.exe等软件 也可以自己下windows安装包putty-0.63-installer.exe 本人直接下载putty-0.63-installer.exe安装包了,然后直接安装 使用pscp方式从windows上传文件到linux服务器 在CMD命令行中进入到putty安装目录 输入pscp 回车 pscp 跟我们平时使用的linux scp命令操作的都是类似的 现在我直接从windows本地上传一个文件到lin

sftp方式从windows上传文件到Linux服务器

今天我一直用scp想实现从windows上传文件到Linux服务器,但是鼓捣了半天也没有实现.后来查资料才发现,scp实现文件的上传和下载貌似只能在Linux和Linux之间实现.(欢迎指正不对的地方) 后来开始转用sftp来解决上述问题,其中也是遇到了不少坑,下面说一下比较合理的步骤: 首先声明,我是在Windows上通过xshell5来连接远程服务器的,连接成功后如下图: 然后用sftp连接远程服务器:sftp 192.168.167.178: 再然后,修改本地上传的文件夹路径:先点击这个按

安卓上传文件至PHP服务器

前两个月有幸参加一次免费培训,开发了一款小软件.发现AsyncHttpClient还真是好用. 直奔主题,安卓上传文件至PHP服务器: 1.PHP端服务器: <?php //链接数据库 include ("config/db.php"); //获取用户id $userid = $_POST['userid']; //处理上传文件 $base_path = "upload/"; $fileName=$_FILES['file']['name']; $name=e

Android端上传文件到Web服务器

本文中主要就Android端上传文件到Web服务器,做出的一个简单的Demo 1.Tomcat上部署的服务端的实现 2.Android端的代码实现 1.Tomcat服务器上面项目的部署与实现 创建一个Web Project 创建FileUploadServlet.java,当然,一下两个重要的Jar包不能够忘记! commons-fileupload-1.2.2.jar commons-io-2.0.1.jar FileUploadServlet.java import java.io.File

SpringBoot 上传文件到linux服务器 异常java.io.FileNotFoundException: /tmp/tomcat.50898……解决方案

SpringBoot 上传文件到linux服务器报错java.io.FileNotFoundException: /tmp/tomcat.50898-- 报错原因: 解决方法 java.io.IOException: java.io.FileNotFoundException: /tmp/tomcat.5089835798184465073.8081/work/Tomcat/localhost/ROOT/www/server/apache-tomcat-8.5.32/webapps/jxmsto

Linux上F上传文件到FTP服务器

Linux上上传跟Windows上上传不一样,在Windows上测试没问题,但是放到Linux服务器上跑,上传的文件中文显示乱码.解决方案: FtpUtil.java红色标记处 package cn.zto.util; import java.io.ByteArrayInputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOExce

怎样上传文件到linux服务器?

我们知道,云主机文件传输是一件相对复杂的事情,经常需要搭建FTP服务器或者是借助其他工具来完成.下面为大家介绍一种简单易操作的传输文件到Linux服务器的方法.对于行云管家来说,Linux文件传输同Windows文件传输一样,我们为每一台Linux主机配置了一个1G的网盘作为中间介质来实现客户端和主机之间的文件传输.那么如何传输文件到Linux服务器?一.什么是主机网盘?为了实现用户更快.更安全.更省钱的文件传输需求,我们在用户将主机导入行云管家平台时,自动为每台主机分配了一个主机网盘,该网盘将