C# 多服务器上传 示例
图片服务器 带宽越来越不够用,还有当一台服务器的机房出问题的时候,不影响 整个web,以及 考虑网通电信访问服务器的 速度,所以考虑使用多台 图片 服务器
这个时候要求 图片服务器 内容是同步 的 
所以写了此程序,写的比较烂,还请批评指正, 
也好让我有所提高 
我在测试的时候通过,修改 system32/dirvers/etc/HOST 来实现 test.com 域名
web.config 中的内容如下:
1. [代码]本地上传
/*本地上传*/
/*
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="index.aspx.cs" Inherits="upload_index" %>
<form method="post" runat="server" action="?action=save" enctype="multipart/form-data">
<input runat="server" type="file" />
<input type="submit" value=" 上  传 " />
</form>
*/
 
 
using System;
using System.Collections.Specialized;
using System.IO;
using System.Net;
using System.Web;
 
 
public partial class upload_index : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        string action = Request.QueryString["action"];
        if (action == "save")
        {
            Response.ContentType = "text/html;charset=utf-8";
 
            Response.Write("<style type=\"text/css\">p{ font-size:12px; line-height:16px; margin:0; padding:0}</style>");
            HttpFileCollection HFC = Request.Files;
 
            for (int i = 0; i < HFC.Count; i++)
            {
                HttpPostedFile currentFile = HFC[i];
                TransportFile(currentFile);
            }  
        }
    }
 
 
    private void TransportFile(HttpPostedFile File)
    {
        Stream s = File.InputStream;
        byte[] byts = new byte[s.Length];
        s.Read(byts, 0, byts.Length);
        s.Close();
        s.Dispose();
 
        if (File.FileName.LastIndexOf(".") >= 0)
        {
            Random ra = new Random();
            string nowFileName = DateTime.Now.Subtract(new DateTime(2000, 1, 1)).TotalMilliseconds.ToString().Replace(".", "") + ra.Next() + File.FileName.Substring(File.FileName.LastIndexOf("."));
 
            NameValueCollection NVC = System.Configuration.ConfigurationManager.AppSettings;
 
            for (int i = 0; i < NVC.Count; i++)
            {http://www.huiyi8.com/yanjiangzhici/
                if (NVC.Keys[i].IndexOf("upload") == 0)
                {演讲致辞
                    PostFile(NVC[i], byts, nowFileName);
                }
            }
 
            Response.Write("<p style=\"line-height:36px; display:block; height:36px;\">图片地址:<a href=\"" + System.Configuration.ConfigurationManager.AppSettings["imgurlprev"].ToString() + nowFileName + "\" target=\"_blank\">" + System.Configuration.ConfigurationManager.AppSettings["imgurlprev"].ToString() + nowFileName + "</a></p>");
        }
 
 
 
    }
 
    private void PostFile(string url,byte[] data,string fileName)
    {
 
        string pwd = System.Configuration.ConfigurationManager.AppSettings["imgserverpwd"].ToString();
        HttpWebRequest HRQ = (HttpWebRequest)System.Net.WebRequest.Create(url + "?filename=" + fileName + "&p=" + pwd);        
        HRQ.Method = "POST";
        HRQ.KeepAlive = false;
        HRQ.ContentType = "multipart/form-data";
        HRQ.Timeout = 10 * 1000;
        HRQ.ContentLength = data.Length;
        Stream sr = HRQ.GetRequestStream();
        sr.Write(data, 0, data.Length);
        HttpWebResponse RES = (HttpWebResponse)HRQ.GetResponse();
         
   
        if (HRQ.HaveResponse)
        {
            Stream Rs = RES.GetResponseStream();                      
            StreamReader RsRead = new StreamReader(Rs);
            Response.Write(RsRead.ReadToEnd());
        }
        else
        {
            Response.Write("<p>" + url + ":<span style=\"color:#f00\">失败</span></p>");            
        }
        sr.Close();
        sr.Dispose();
    }
}
2. [代码]接收端
<%@ Page Language="C#" AutoEventWireup="true" %>
<%
    string p = Request.QueryString["p"];
    string pwd = System.Configuration.ConfigurationManager.AppSettings["imgserverpwd"].ToString();
    if (p == pwd)
    {
        string FolderPath = Server.MapPath("/files");
        string filename = Request.QueryString["filename"];
 
        System.IO.Stream stream = Request.InputStream;
        byte[] buffer = new byte[stream.Length];
        stream.Read(buffer, 0, (int)stream.Length);
        Random ra = new Random();
 
 
        string nowFilePath = FolderPath + "/" + filename;
        System.IO.File.WriteAllBytes(nowFilePath, buffer);
        Response.Write("<p>" + HttpContext.Current.Request.Url.Host + " " + filename + ":<span style=\"color:#999\">上传成功</span></p>");
    }
 
     
%>
C# 多服务器上传 示例的更多相关文章
- UEditor之实现配置简单的图片上传示例
		UEditor之实现配置简单的图片上传示例 原创 2016年06月11日 18:27:31 开心一笑 下班后,阿华到楼下小超市买毛巾,刚买完出来,就遇到同一办公楼里另一家公司的阿菲,之前与她远远的有过 ... 
- 【转载】兼容php5,php7的cURL文件上传示例
		转载来自: http://www.huanlinna.com/2016/06/25/coding/php5-php7-upload-demo-via-curl.html https://segment ... 
- jQuery AJAX 网页无刷新上传示例
		新年礼,提供简单.易套用的 jQuery AJAX 上传示例及代码下载.后台对文件的上传及检查,以 C#/.NET Handler 处理 (可视需要改写成 Java 或 PHP). 有时做一个网站项目 ... 
- 测试必备技能系列4:如何用SSH向linux服务器上传下载文件
		通过ssh方式,向远程服务器上传文件 非常方便 直接看老徐之前的文章http://www.51testing.com/?uid-497177-action-viewspace-itemid-37054 ... 
- ASP.NET跨服务器上传文件的相关解决方案
		第一种:通过FTP来上传文件 首先,在另外一台服务器上设置好FTP服务,并创建好允许上传的用户和密码,然后,在ASP.NET里就可以直接将文件上传到这台 FTP 服务器上了.代码如下: <%@ ... 
- xshell终端向远程服务器上传文件方法
		centos-7下在本地终端里向远程服务器上传文件,在命令行中执行的软件. 安装命令如下: 在终端里输入如下命令: 会弹出如下窗口 选择你要上传的文件即可上传成功. 
- android 向服务器上传
		采用数据流的格式向服务器上传. 代码如下: private void upload(String requestURL) { //参数requestU ... 
- 向linux服务器上传下载文件方式收集
		向linux服务器上传下载文件方式收集 1. scp [优点]简单方便,安全可靠:支持限速参数[缺点]不支持排除目录[用法] scp就是secure copy,是用来进行远程文件拷贝的.数据传输使用 ... 
- Spring学习---Spring中利用组件实现从FTP服务器上传/下载文件
		FtpUtil.java import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundExcepti ... 
随机推荐
- 使用新版MonoDevelop来进行unity工程调试
			现在可以使用新版的MonoDeveloper来调试Unity工程了,新版的MonoDeveloper界面上漂亮很多,而且使用.调试上感觉也更舒服了.先上一张图: 安装方法如下: 登陆网址:http ... 
- apache重定向无效
			这个问题让我纠结了蛮久啊,因为之前一直不注意SEO,网站带www和不带www的一级域名都被收录了,而且不知道为什么不带www的一级域名被收录比www还多,这可不是我的初衷!这次吸取教训了,以后再开站不 ... 
- bootstrap    input   加了   disabled  后台竟然接受不到值
			下午做了一个input 值需要不可改变.在input属性中加入了 disabled .在后台接受 var_dump($_POST); 竟然看不到值. <input type="t ... 
- LeakCanary  Android 和 Java 内存泄露检测
			说起内存泄漏还是挺让人头疼的,而且不是每个手机都会发生的情况,往往又不易察觉,那么今天我们就来介绍下LeakCanary这个工具 githup:https://github.com/square/le ... 
- Android Handler警告,SimpleDateFormat警告
			1:Handler// This Handler class should be static or leaks might occur: IncomingHandler @SuppressLi ... 
- ios 获取手机设备信息
			[UIDevice currentDevice]:表示设备 NSString *devices=[[NSString alloc] initWithFormat: @"unique id: ... 
- jquery实现全选、全消、反选功能
			HTML代码: <input type="checkbox" name="checkbox" class="A" /> 使用按钮 ... 
- python mysql orm
			Python中操作mysql的pymysql模块详解:https://www.cnblogs.com/wt11/p/6141225.html Python 12 - Mysql & ORM:h ... 
- C++模板类[初步]
			/* * stacktp.h * * Created on: 2014年3月29日 * Author: */ /** * - 模板类的概念,与使用 * -# export template <c ... 
- TRansportation ANalysis and SIMulation System
			https://www.fhwa.dot.gov/planning/tmip/transims/background.cfm?from=groupmessage 
