通过文件流的方式上传文件
2009-03-26 20:49
260 查看
上传文件有四种方式
1:fileupload
2:ftp
3:网络共享
4:文件流写入
我们经常碰到这种困惑,大家都知道fileupload可以通过saveas方法存储文件,但是如果我们想把上传的文件写入到网络中其他服务器该怎么办呢?这样做有两个好处
1:文件集中存储
2:便于扩展
3:便于备份
因为我们接受上传的aspx.cs文件运行于某台服务器,但是我们要写入另外一台服务器,该怎么办呢?通常有三种方法:FTP、文件流写入、网络共享(我还没试验成功)
文件流写入DEMO:
index.aspx
<%@ Page Language="C#" AutoEventWireup="true" Debug="true" CodeFile="index.aspx.cs" Inherits="_Index" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>无标题页</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:FileUpload ID="FileUpload1" runat="server" /><br />
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="ok" Width="67px" /> </div>
</form>
</body>
</html>
index.aspx.cs
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.IO;
using System.Net;
public partial class _Index : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
if (FileUpload1.HasFile)
{
byte[] postdata = FileUpload1.FileBytes;
FileUpload1.SaveAs(@"D:\project\TestUpload\upload\" + FileUpload1.FileName);
HttpWebRequest httprequest = (HttpWebRequest)System.Net.WebRequest.Create("http://dxf.3g.cn:81/uploadfilestream.aspx?filename=" + FileUpload1.FileName);
httprequest.Method = "POST";
httprequest.KeepAlive = false;
httprequest.ContentType = "multipart/form-data";
httprequest.Timeout = 10*1000;
httprequest.ContentLength = postdata.Length;
Stream sr=httprequest.GetRequestStream();
sr.Write(postdata, 0, postdata.Length);
HttpWebResponse respon = (HttpWebResponse)httprequest.GetResponse();
if (httprequest.HaveResponse)
{
Response.Write("向另外一个服务器post成功");
HttpWebResponse rs = (HttpWebResponse)httprequest.GetResponse();
Stream rstream = respon.GetResponseStream();
StreamReader rstreamread = new StreamReader(rstream);
Response.Write(rstreamread.ReadToEnd());
}
else
{
Response.Write("向另外一个服务器post失败");
}
sr.Close();
}
}
}
另一台机器的代码
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.IO;
using System.Net;
public partial class uploadfilestream : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string filename = Request["filename"];
Stream stream = Request.InputStream;
byte[] buffer = new byte[stream.Length];
stream.Read(buffer, 0, (int)stream.Length);
File.WriteAllBytes(@"D:\project\TestUploadStream\upload\" + filename, buffer);
Response.Write("上传成功" + filename);
/*
HttpWebRequest res = (HttpWebRequest)WebRequest.Create("http://dxf.3g.cn:81/test.aspx");
HttpWebResponse respon = (HttpWebResponse)res.GetResponse();
Stream restream= respon.GetResponseStream();
StreamReader srm = new StreamReader(restream);
Response.Write(srm.ReadToEnd());
* */
}
}
FTP写入:
1:fileupload
2:ftp
3:网络共享
4:文件流写入
我们经常碰到这种困惑,大家都知道fileupload可以通过saveas方法存储文件,但是如果我们想把上传的文件写入到网络中其他服务器该怎么办呢?这样做有两个好处
1:文件集中存储
2:便于扩展
3:便于备份
因为我们接受上传的aspx.cs文件运行于某台服务器,但是我们要写入另外一台服务器,该怎么办呢?通常有三种方法:FTP、文件流写入、网络共享(我还没试验成功)
文件流写入DEMO:
index.aspx
<%@ Page Language="C#" AutoEventWireup="true" Debug="true" CodeFile="index.aspx.cs" Inherits="_Index" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>无标题页</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:FileUpload ID="FileUpload1" runat="server" /><br />
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="ok" Width="67px" /> </div>
</form>
</body>
</html>
index.aspx.cs
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.IO;
using System.Net;
public partial class _Index : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
if (FileUpload1.HasFile)
{
byte[] postdata = FileUpload1.FileBytes;
FileUpload1.SaveAs(@"D:\project\TestUpload\upload\" + FileUpload1.FileName);
HttpWebRequest httprequest = (HttpWebRequest)System.Net.WebRequest.Create("http://dxf.3g.cn:81/uploadfilestream.aspx?filename=" + FileUpload1.FileName);
httprequest.Method = "POST";
httprequest.KeepAlive = false;
httprequest.ContentType = "multipart/form-data";
httprequest.Timeout = 10*1000;
httprequest.ContentLength = postdata.Length;
Stream sr=httprequest.GetRequestStream();
sr.Write(postdata, 0, postdata.Length);
HttpWebResponse respon = (HttpWebResponse)httprequest.GetResponse();
if (httprequest.HaveResponse)
{
Response.Write("向另外一个服务器post成功");
HttpWebResponse rs = (HttpWebResponse)httprequest.GetResponse();
Stream rstream = respon.GetResponseStream();
StreamReader rstreamread = new StreamReader(rstream);
Response.Write(rstreamread.ReadToEnd());
}
else
{
Response.Write("向另外一个服务器post失败");
}
sr.Close();
}
}
}
另一台机器的代码
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.IO;
using System.Net;
public partial class uploadfilestream : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string filename = Request["filename"];
Stream stream = Request.InputStream;
byte[] buffer = new byte[stream.Length];
stream.Read(buffer, 0, (int)stream.Length);
File.WriteAllBytes(@"D:\project\TestUploadStream\upload\" + filename, buffer);
Response.Write("上传成功" + filename);
/*
HttpWebRequest res = (HttpWebRequest)WebRequest.Create("http://dxf.3g.cn:81/test.aspx");
HttpWebResponse respon = (HttpWebResponse)res.GetResponse();
Stream restream= respon.GetResponseStream();
StreamReader srm = new StreamReader(restream);
Response.Write(srm.ReadToEnd());
* */
}
}
FTP写入:
相关文章推荐
- c# 通过文件流方式上传文件到服务器
- java模拟表单上传文件,java通过模拟post方式提交表单实现图片上传功能实例
- 通过Ajax方式上传文件,使用FormData进行Ajax请求 博客分类: RESTful Web ServicesWeb前端开发
- 通过Ajax的方式上传文件
- 通过Ajax方式上传文件,使用FormData进行Ajax请求
- C# 通过WebService方式 IIS发布网站 上传文件到服务器
- winform下通过webclient使用非流方式上传(post)数据和文件
- 使用HttpClient以文件流的方式上传文件(非multipartFormData方式)
- vc中如何通过http的post方式上传文件
- 【文件上传 前端】文件上传 前端 Part3 —— HTML5 文件流方式
- 通过Ajax方式上传文件,使用FormData进行Ajax请求
- 通过Ajax方式上传文件,使用FormData进行Ajax请求
- java 两种上传文件(图片)方式(app通过流上传)+服务端获取方式(多图上传,普通文本上传,图片压缩)
- python 通过post方式上传文件到php服务器
- iOS通过http post 文件流上传文件(头像)代码实现
- php通过文件流方式复制文件的方法
- 通过Ajax方式上传文件,使用FormData进行Ajax请求
- AS3 下通过HTTP协议 实现Form方式实现二进制文件上传
- 使用插件ajaxfileupload通过ajax方式上传文件,在火狐下出错
- WebAPI通过multipart/form-data方式同时上传文件以及数据(含HttpClient上传Demo)