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 ...
随机推荐
- linux pptp 服务端安装并正常上网
linux 下 PPTP VPN 1.安装相关软件32位版:yum -y install ppprpm -Uvh http://poptop.sourceforge.net/yum/stable/rh ...
- 让子元素在父元素中水平居中align-items
做案例中,我们会发现让子元素在父元素中垂直居中,要设置margin和padding等,各种设置才能垂直居中 现在可以使用CSS3中的align-items实现 align-items 定义子元素在父元 ...
- 录音整理文字工具otranscribe简介
网址: http://otranscribe.com/ 首先载入音频文件,支持 mp3, ogg, webm, wav (HTML5 无需将文件上传至服务器,可保护隐私),然后就可以边听边整理了. 通 ...
- 由浅到深理解ROS(3)-命名空间
全局命名空间: /rosout前面的反斜杠“/”表明该节点名称属于全局命名空间.之所以叫做全局名称因为它们在任何地方(包括代码.命令行工具.图形界面工具等的任何地方)都可以使用.无论这些名称用作众多命 ...
- Java线程面试题:设计四个线程,其中两个线程每次对 j 加 1,另外两个每次对 j 减 1,程序如下。
package thread; /** * Java线程面试题 * @author zhongfg * @date 2015-06-16 */ public class ThreadInterview ...
- 反射机制,jvm,class类型
[说明]这是上午完成的内容或者说是接触到的知识点,包括servlet简单的数据库连接,表格的显示需要用到的插件jstl,还有最最多的java反射原理的讲解 1)数据库的设计 2)编程中用到的知识点 3 ...
- CAFFE学习笔记(三)在VS2013下生成需要的exe文件
如我们所知,CAFFE_ROOT下有一个文件夹叫tools,里面中有许多cpp文件,它们各自有其不同的功能.但是很显然,当我们要完成某样工作时,我们是不能直接用cpp文件的,只能用exe文件.如何利用 ...
- Mybatis中的关联映射和查询
一.商品订单数据模型 1.数据表 这里定义了四个表,分别表示用户,商品,订单,和订单详情. 用户表user CREATE TABLE `user` ( `id` int(11) NOT NULL AU ...
- ASP.NET MVC + ADO.NET EF 项目实战(一):应用程序布局设计
什么叫上下文? 在你设计一个方法的时候,无法直接从方法参数或实例成员(字段或属性)获得的所有信息都是上下文.例如: 当前用户是谁? 刚才提供操作的数据库连接实例从哪里拿到? 这个方法从哪个 View ...
- jquery 访问后台方法 并且获取后方法返回的数据
说明: 1.开发环境 asp.net MVC4 c#语言. 后台方法位于控制器中ProController.cs中 后台方法如下: public string GetNumber() { string ...