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错误:本错误为远程服务器中不具备此目录

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

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

  1. ASP.NET上传文件到远程服务器(HttpWebRequest)

    /// <summary> /// 文件上传至远程服务器 /// </summary> /// <param name="url">远程服务地址 ...

  2. 安装SSH2拓展 PHP上传文件到远程服务器

    情景:客户端上传图片到服务器A,服务器A同步上传至另外一个静态资源服务器B 环境:php7 linux(ubuntu) 安装php的ssh2扩展 -dev sudo apt-get install p ...

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

    ccentos7服务器 ======================== 一.安装vsftpd及ftp命令 yum install vsftpd -y yum install ftp -y 二.vsf ...

  4. scp上传文件到远程服务器

    scp -P 22 E:/download/2028792_www.yeves.cn_nginx/cloud.pem root@ip:/usr/local/src

  5. asp.net 服务器 上传文件到 FTP服务器

    private string ftpServerIP = "服务器ip";//服务器ip private string ftpUserID = "ftp的用户名" ...

  6. 在C#客户端用HTTP上传文件到Java服务器

    在C#客户端用HTTP上传文件到Java服务器  来源:http://www.cnblogs.com/AndyDai/p/5135294.html 最近在做C / S 开发,需要在C#客户端上传文件到 ...

  7. .Net 上传文件到ftp服务器和下载文件

    突然发现又很久没有写博客了,想起哎呦,还是写一篇博客记录一下吧,虽然自己还是那个渣渣猿. 最近在做上传文件的功能,上传到ftp文件服务器有利于管理上传文件. 前面的博客有写到layui如何上传文件,然 ...

  8. java 上传文件到 ftp 服务器

    1.  java 上传文件到 ftp 服务器 package com.taotao.common.utils; import java.io.File; import java.io.FileInpu ...

  9. PHP 上传文件到其他服务器

    PHP 上传文件到其他服务器 标签(空格分隔): 安装Guzzle类库 **guzzle** 是发送网络请求的类库 composer安装:**composer require guzzlehttp/g ...

随机推荐

  1. photoshop的页面制作练习2

  2. validator验证

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xht ...

  3. A. Night at the Museum Round#376 (Div. 2)

    A. Night at the Museum time limit per test 1 second memory limit per test 256 megabytes input standa ...

  4. 2013最新Android常用的工具类整理

    主要介绍总结的Android开发中常用的工具类,大部分同样适用于Java. 目前包括HttpUtils.DownloadManagerPro.ShellUtils.PackageUtils. Pref ...

  5. 复习TextView(查漏补缺)

    android:drawableLeft="@drawable/ic_launcher"----设置图片居左 android:paddingLeft="20dp" ...

  6. Python2中while 1比while True更快

    1) bool类是从int类继承而来的 2) True/False 在python2中不是关键字,但是在python3是(True,False,None) PS > python2 Enthou ...

  7. 《Windows驱动开发技术详解》之Windows内核函数

    内核模式下字符串操作 ANSI_STRING和UNICODE_STRING分别定义如下:

  8. MFC消息机制

    何谓消息.消息处理函数.消息映射?消息简单的说就是指通过输入设备向程序发出指令要执行某个操作.具体的某个操作是你的一系列代码.称为消息处理函数. 在SDK中消息其实非常容易理解,当窗口建立后便会有一个 ...

  9. Android软件盘InputMethodManager

    调用下面代码:(第一次调用显示,再次调用则隐藏,如此反复),this指activity InputMethodManager imm = (InputMethodManager)this.getSys ...

  10. DOM操作-动态创建网页元素

    动态创建新的DOM元素,是JavaScript操作网页对象模型的重要手段之一 代码: <!DOCTYPE html> <html> <head> <title ...