C# 多服务器上传 示例

图片服务器  带宽越来越不够用,还有当一台服务器的机房出问题的时候,不影响 整个web,以及 考虑网通电信访问服务器的 速度,所以考虑使用多台 图片 服务器

这个时候要求 图片服务器 内容是同步 的 
所以写了此程序,写的比较烂,还请批评指正, 
也好让我有所提高 
我在测试的时候通过,修改 system32/dirvers/etc/HOST 来实现 test.com 域名

web.config 中的内容如下:

<?xml version="1.0"?>

<configuration>

<appSettings>

<add key="upload1" value="http://1.test.com:81/ReqFile.aspx" />  <!--这里是第一台图片服务器-->

<add key="upload2" value="http://2.test.com:81/ReqFile.aspx" />  <!--这里是第二台图片服务器-->

<add key="upload3" value="http://3.test.com:88/upload.php" />    <!--这里是第三台图片服务器-->

<add key="imgurlprev" value="http://images.test.com:81/files/" />  <!--这个是上传后图片 生成图片的 url 前缀-->

<add key="imgserverpwd" value="930B194D9C47126CFFE430720CCADBB4" /> <!--这里在 url 中加入密文,用于解密 -->

</appSettings>

<connectionStrings/>

<system.web>

<pages enableEventValidation="false" viewStateEncryptionMode="Never" />

<compilation debug="true"/>

<authentication mode="Windows" />

</system.web>

</configuration>
?
?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>");
    }
 
     
%>

时间: 2024-10-05 13:42:17

C# 多服务器上传 示例的相关文章

struts2之如何向服务器上传文件

转载请注明:http://blog.csdn.net/uniquewonderq 问题:在struts2框架下实现文件上传 方案:struts2提供了拦截器可以自动实现文件上传,并且该拦截器存在于defaultStack中,是每个action默认使用的.复用之前的案例. 步骤一:打开上传页面 在struts.xml中,配置打开上传页面的action,代码如下: </pre><pre name="code" class="html"><?

jQuery AJAX 网页无刷新上传示例

新年礼,提供简单.易套用的 jQuery AJAX 上传示例及代码下载.后台对文件的上传及检查,以 C#/.NET Handler 处理 (可视需要改写成 Java 或 PHP). 有时做一个网站项目 (不论是否 ASP.NET),内附的 FileUpload 控件,功能不足 (页面必须刷新.不支援 AJAX),或外观太丑被用户嫌弃 (却无法透过 CSS 自定义外观).网路上虽已有许多可用的示例,如: jQuery File Upload,但功能太强大.外观复杂,欲仅取出部分功能来引用,反而不易

向云服务器上传下载文件方法汇总(转)

转载于:https://yq.aliyun.com/articles/64700 摘要: 一.向Windows服务器上传下载文件方式 方法有很多种,此处介绍远程桌面的本地资源共享方法. 1.运行mstsc,连接远程桌面的时候,点"选项>>" 2."本地资源"-->详细信息. 3."磁盘驱动器"前面打钩. 一.向Windows服务器上传下载文件方式 方法有很多种,此处介绍远程桌面的本地资源共享方法. 1.运行mstsc,连接远程桌

向linux服务器上传下载文件方式收集

向linux服务器上传下载文件方式收集 1. scp [优点]简单方便,安全可靠:支持限速参数[缺点]不支持排除目录[用法] scp就是secure copy,是用来进行远程文件拷贝的.数据传输使用 ssh,并且和ssh 使用相同的认证方式,提供相同的安全保证 . 命令格式: scp [参数] <源地址(用户名@IP地址或主机名)>:<文件路径> <目的地址(用户名 @IP 地址或主机名)>:<文件路径> 举例: scp /home/work/source.

跨服务器上传文件方式

跨服务器上传文件的方式有很多,其中一种是使用在中间服务器上使用临时文件的方式进行保存后再发送到另一个服务器上,实现文件上传. 问题点:中间保存临时文件,还需要不定时的进行文件清理,比较麻烦 直接进行文件的转发,使用byte[]数组方式直接进行文件转发,然后,服务器根据传递的byte[]数组进行转文件方式,使用httpclient方式将byte[]数组发送到服务端,特别注意的点在于, 发送的时候使用"content-type" = "application/json"

Android连接socket服务器上传下载多个文件

android连接socket服务器上传下载多个文件1.socket服务端SocketServer.java public class SocketServer { int port = 8888;// 端口号,必须与客户端一致 // 选择进行传输的文件(测试) String path = "C:\\Temp"; String filePath = "E:\\img.png"; Socket client; public static void main(Strin

ASP.NET跨服务器上传文件的相关解决方案

第一种:通过FTP来上传文件 首先,在另外一台服务器上设置好FTP服务,并创建好允许上传的用户和密码,然后,在ASP.NET里就可以直接将文件上传到这台 FTP 服务器上了.代码如下: <%@ Page Language="C#" EnableViewState="false"%> <%@ Import Namespace="System.Net" %><%@ Import Namespace="Syste

Spring Boot文件上传示例(Ajax和REST)

本文介绍如何使用Ajax请求在Spring Boot Web应用程序(REST结构)中上传文件. 本文中使用的工具: Spring Boot 1.4.3.RELEASE Spring 4.3.5.RELEASE Thymeleaf jQuery (webjars) Maven Embedded Tomcat 8.5.6 Google Chrome浏览器 1. 项目结构 一个标准的Maven项目结构.如下图所示 - 2. 项目依赖 声明一个额外的jQuery webjar依赖关系,适用于HTML格

windows、linux通过ftp从ftp服务器上传和下载

最近需要用到文件的上传和下载,查看我们使用的系统,发现有一个进程为t_ftpd,怀疑其为一个ftp的守护进程,于是想要用ftp的方式实现. 在windows上使用bat脚本的方式实现: 首先写一个bat脚本: download.bat @echo off ftp -s:E:\Sylixos\SylixOS_Qt\build-TCWareWigget-Desktop_Qt_5_7_1_MinGW_32bit-Debug\debug\ftp\ftp.txt 这样就会调用ftp.txt文件 ftp.t