通过文件流的方式上传文件

上传文件有四种方式

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" />&nbsp;</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写入:

转载于:https://my.oschina.net/dxf/blog/273

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值