怎样把远程URL下载下来? 怎样把远程URL(如http://zi.csdn.net/58560ali.jpg)自动下载并保存在D:\下呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 WebRequest web = WebRequest.Create("http://zi.csdn.net/58560ali.jpg"); WebResponse wrp = web.GetResponse(); Stream stream = wrp.GetResponseStream(); int n = (int)wrp.ContentLength; byte[] byteImg = new byte[n]; stream.Read(byteImg,0,n); wrp.Close(); FileStream fs = File.Create("d:\\1.jpg"); fs.Write(byteImg, 0, n); fs.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.Threading; using System.Data.SqlClient; using System.IO; using System.Net; public partial class Default2 : System.Web.UI.Page { private WebClient client = new WebClient(); private string URLAddress = string.Empty; private string fileName = string.Empty; #region 窗体加载事件 protected void Page_Load(object sender, EventArgs e) { this.Title = "测试网页"; Securities security = new Securities(); if (!security.HasLogined()) { Response.Write(" <script>alert('请先登陆!') </script>"); Server.Transfer("Default.aspx"); } string role = Session["role"].ToString(); if (!role.Equals("employee")) { Response.Write(" <script>alert('很抱歉,您的权限不够!') </script>"); Server.Transfer("Default.aspx"); } if (!Page.IsPostBack) { DownFileToDirectory(); } } #endregion #region 将选定的种子文件下载到指定目录下 private void DownFileToDirectory() { if (Request["key"] != null && !Request["key"].Equals(string.Empty)) { try { int fid = Convert.ToInt32(Request["key"]); //文件的编号,从库中取,服务端有此资源 string connStr = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString; SqlConnection conn = new SqlConnection(connStr); string sql = "select FileName from fileTable where fileId=" + fid + ""; SqlDataAdapter adapter = new SqlDataAdapter(sql, conn); DataTable dt = new DataTable(); adapter.Fill(dt); if (dt.Rows.Count > 0) { URLAddress = "http://192.168.1.210/Test/DownloadList.aspx"; fileName = dt.Rows[0]["FileName"].ToString(); StartDownload(); } } catch { Response.Redirect("Download.aspx"); } } Response.Redirect("Download.aspx"); } #endregion #region 下载某网页的文件 private void DownloadFileByUrl() { string Dir = @"C:\Program Files\myDirectory\fileByDownload"; if (!Directory.Exists(Dir)) { Directory.CreateDirectory(Dir); } string savePath = Dir + "\\" + fileName; if (File.Exists(savePath)) { return; } try { WebRequest myre = WebRequest.Create(URLAddress); } catch (WebException exp) { string e = exp.Message; } try { client.Credentials = CredentialCache.DefaultCredentials; client.DownloadFile(URLAddress, savePath); } catch (WebException exp) { string e = exp.Message; } finally { Thread cur = Thread.CurrentThread; if (cur.Name.Equals("autoDown")) { cur.Abort(); } } } #endregion #region 启用线程,下载文件 private void StartDownload() { Thread th = new Thread(new ThreadStart(DownloadFileByUrl)); th.Name = "autoDown"; th.Start(); } #endregion } /// <summary> /// 下载文件 /// </summary> /// <param name="PageUrl">网址</param> /// <param name="filename">保存文件路径</param> public void DownFile(string PageUrl, string filename) { if (!Directory.Exists(filename)) { Directory.CreateDirectory(filename); } string path = PageUrl.Substring(PageUrl.LastIndexOf("/") + 1); string dirname = filename + "\\" + path; if (File.Exists(dirname)) { return; } else { try { WebClient wc = new WebClient(); WebProxy wp = new WebProxy(al[proxy].ToString(), true); wc.Proxy = wp; wc.DownloadFile(PageUrl, dirname); } catch (WebException ex) { if (ex.Status == WebExceptionStatus.ProtocolError) { //文件未找到--跳出 //MessageBox.Show(ex.ToString()); return; } else { //换代理 IP //MessageBox.Show(ex.ToString()); proxy++; if (proxy >= al.Count) { al = ReadIPproxy("e:\\test.txt");//初始化代理 IP } DownFile(PageUrl, filename); } } } } 服务器 DataTable中单元格居中的问题? aspx页面 如何 将http修改为 https连接 列出用户提交表单的所有成员???? 怎样在运行时改变ListView的样式 在.NET中如何实现简单的审批.... 看看这个错误是怎么回事 谁能使用Datatable获得纪录个数举例? iframe棘手问题! 快救命,我的网站怎么了?空间问题还是代码不对 怎样把相同目录下的两个XML文件,用第一个替换掉第二个? 求救!新闻信息中的关键字,当鼠标放上去即弹出一个小窗口,鼠标移开则隐藏这个窗口,是怎么实现的呢?在线等
WebResponse wrp = web.GetResponse();
Stream stream = wrp.GetResponseStream();
int n = (int)wrp.ContentLength;
byte[] byteImg = new byte[n];
stream.Read(byteImg,0,n);
wrp.Close();
FileStream fs = File.Create("d:\\1.jpg");
fs.Write(byteImg, 0, n);
fs.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.Threading;
using System.Data.SqlClient;
using System.IO;
using System.Net; public partial class Default2 : System.Web.UI.Page
{
private WebClient client = new WebClient();
private string URLAddress = string.Empty;
private string fileName = string.Empty; #region 窗体加载事件
protected void Page_Load(object sender, EventArgs e)
{
this.Title = "测试网页";
Securities security = new Securities();
if (!security.HasLogined())
{
Response.Write(" <script>alert('请先登陆!') </script>");
Server.Transfer("Default.aspx");
}
string role = Session["role"].ToString();
if (!role.Equals("employee"))
{
Response.Write(" <script>alert('很抱歉,您的权限不够!') </script>");
Server.Transfer("Default.aspx");
}
if (!Page.IsPostBack)
{
DownFileToDirectory();
}
}
#endregion #region 将选定的种子文件下载到指定目录下
private void DownFileToDirectory()
{
if (Request["key"] != null && !Request["key"].Equals(string.Empty))
{
try
{
int fid = Convert.ToInt32(Request["key"]); //文件的编号,从库中取,服务端有此资源
string connStr = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
SqlConnection conn = new SqlConnection(connStr);
string sql = "select FileName from fileTable where fileId=" + fid + "";
SqlDataAdapter adapter = new SqlDataAdapter(sql, conn);
DataTable dt = new DataTable();
adapter.Fill(dt);
if (dt.Rows.Count > 0)
{
URLAddress = "http://192.168.1.210/Test/DownloadList.aspx";
fileName = dt.Rows[0]["FileName"].ToString();
StartDownload();
}
}
catch
{
Response.Redirect("Download.aspx");
}
}
Response.Redirect("Download.aspx");
}
#endregion #region 下载某网页的文件
private void DownloadFileByUrl()
{
string Dir = @"C:\Program Files\myDirectory\fileByDownload";
if (!Directory.Exists(Dir))
{
Directory.CreateDirectory(Dir);
}
string savePath = Dir + "\\" + fileName;
if (File.Exists(savePath))
{
return;
} try
{
WebRequest myre = WebRequest.Create(URLAddress);
}
catch (WebException exp)
{
string e = exp.Message;
} try
{
client.Credentials = CredentialCache.DefaultCredentials;
client.DownloadFile(URLAddress, savePath);
}
catch (WebException exp)
{
string e = exp.Message;
}
finally
{
Thread cur = Thread.CurrentThread;
if (cur.Name.Equals("autoDown"))
{
cur.Abort();
}
}
}
#endregion #region 启用线程,下载文件
private void StartDownload()
{
Thread th = new Thread(new ThreadStart(DownloadFileByUrl));
th.Name = "autoDown";
th.Start();
}
#endregion
}
/// 下载文件
/// </summary>
/// <param name="PageUrl">网址</param>
/// <param name="filename">保存文件路径</param>
public void DownFile(string PageUrl, string filename)
{
if (!Directory.Exists(filename))
{
Directory.CreateDirectory(filename);
}
string path = PageUrl.Substring(PageUrl.LastIndexOf("/") + 1);
string dirname = filename + "\\" + path;
if (File.Exists(dirname))
{
return;
}
else
{
try
{
WebClient wc = new WebClient();
WebProxy wp = new WebProxy(al[proxy].ToString(), true);
wc.Proxy = wp;
wc.DownloadFile(PageUrl, dirname);
}
catch (WebException ex)
{
if (ex.Status == WebExceptionStatus.ProtocolError)
{
//文件未找到--跳出
//MessageBox.Show(ex.ToString());
return;
}
else
{
//换代理 IP
//MessageBox.Show(ex.ToString());
proxy++;
if (proxy >= al.Count)
{
al = ReadIPproxy("e:\\test.txt");//初始化代理 IP
}
DownFile(PageUrl, filename);
}
}
} }