关注!!!关注!!!
大家看看怎么样才能正确将WebResponse取得的文件编码
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.IO;
using System.Net;
using System.Text;
namespace getfile
{
public class WebForm1 : System.Web.UI.Page
{
protected override void OnLoad(EventArgs e)
{
Response.Clear();
string url = Request.QueryString["url"];
if (null == url || url.Trim().Length == 0)
{
Response.End();
return;
}
try
{
WebRequest request = WebRequest.Create(url);
request.Method = Request.RequestType;
request.ContentType = Request.ContentType;
int reads = 0;
byte[] buffer = new byte[512];
if (Request.RequestType.Equals("POST"))
{
if (null != Request.Form)
{
using (Stream s = request.GetRequestStream())
{
while ((reads = Request.InputStream.Read(buffer, 0, buffer.Length)) > 0)
{
s.Write(buffer, 0, reads);
}
s.Flush();
}
}
}
WebResponse response = request.GetResponse();
Response.ContentType = response.ContentType;
using (Stream s = response.GetResponseStream())
{
while ((reads = s.Read(buffer, 0, buffer.Length)) > 0)
{
//Response.OutputStream.Write(buffer, 0, reads);
writeFile(buffer,Server.MapPath(".") + @"\my.xls");
}
}
response.Close();
}
catch(Exception ex)
{
ex.ToString();
}
Response.End();
base.OnLoad (e);
}
/// <summary>
/// 写文件
/// </summary>
/// <param name="mybt">需要写入的byte字节流</param>
/// <param name="filename">要写入的文件的名称及其绝对路径</param>
/// <returns>返回bool值是否成功</returns>
public bool writeFile(byte[] mybt,string filename)
{
try
{
StreamWriter write = new StreamWriter(filename,true);
System.Text.Encoding myen = Encoding.GetEncoding("GB2312");
//byte[] wbyt = Encoding.Convert(Encoding.Default,Encoding.GetEncoding("GB2312"),mybt,0,mybt.Length);
string mystr = myen.GetString(mybt,0,wbyt.Length);
write.Write(mystr);
write.Close();
return true;
}
catch(Exception ex)
{
ex.ToString();
return false;
}
}
private void Page_Load(object sender, System.EventArgs e)
{
}
#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
InitializeComponent();
base.OnInit(e);
}
private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
}
}