asp.net(C#)如何搜集远程图片并传到服务器

 我来答
匿名用户
2013-09-23
展开全部
下面是一个ajax类库 你自己修改一下先得到到网页然后在分析出只要jpg gif 等等图片格式的连接就好了 然后在保存
function ajax(){
this.method;
this.url;
this.responsetype;
this.content;
var http_request = false;
this.getExecObj = function(reValue){
if(window.XMLHttpRequest) {
http_request = new XMLHttpRequest();
if (http_request.overrideMimeType) {
http_request.overrideMimeType("text/xml");
}
}
else if (window.ActiveXObject) {
try {
http_request = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
http_request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {}
}
}
if (!http_request) {
//window.alert("创建XMLHttpRequest对象实例失败.");
return false;
}

if(this.method.toLowerCase()=="get") {
http_request.open(this.method, this.url, true);
}
else if(this.method.toLowerCase()=="post") {
http_request.open(this.method, this.url, true);
http_request.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
}
else {
//window.alert("http请求类别参数错误。");
return false;
}
http_request.send(this.content);

var reTextResponse = function() {
if (http_request.readyState == 4) {
if (http_request.status == 200) {
reValue(http_request.responseText);
} else {
//alert("页面有异常。");
}
}
}
var reXMLResponse = function() {
if (http_request.readyState == 4) {
if (http_request.status == 200) {
reValue(http_request.responseXML);
} else {
//alert("页面有异常。");
}
}
}

if(this.responsetype.toLowerCase()=="text") {
http_request.onreadystatechange = reTextResponse;
}
else if(this.responsetype.toLowerCase()=="xml") {
http_request.onreadystatechange = reXMLResponse;
}
else {
//window.alert("参数错误。");
return false;
}
}
}

// 调用方法
var _ajax = new ajax()
_ajax.method = "post"; //是get还是post
_ajax.url = "Returnlist.aspx"; //请求的地址
_ajax.responsetype = "text"; //处理返回内容的类型
_ajax.content = "id=2"; //发送的内容
_ajax.getExecObj( //对返回值处理
function(str){
//这里写你远程读取到网页后的代码 str就是读取到的远程网页代码
document.getElementById("select1").outerHTML = "<select name='select1' onchange='rsp(this)'><option value='0'>选择大产品</option>"+ str + "</select>"
}
);
匿名用户
2013-09-23
展开全部
这个是VBS,没法直接转换!要分前后台写!看你的代码应该是远程存储图片,这个用二进制流实现教好,网上有很多这样的例子! protected void Page_Load(object sender, EventArgs e) { string filename =Server.MapPath("qq/" + "a.gif"); string url = " http://www.baidu.com/img/logo.gif"; SavePhotoFromUrl(filename, url); } public static bool SavePhotoFromUrl(string FileName, string Url) { bool Value = false; WebResponse response = null; Stream stream = null; try { HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url); response = request.GetResponse(); stream = response.GetResponseStream(); if (!response.ContentType.ToLower().StartsWith("text/")) { Value = SaveBinaryFile(response, FileName); } } catch (Exception err) { string aa = err.ToString(); } return Value; } private static bool SaveBinaryFile(WebResponse response, string FileName) { bool Value = true; try { byte[] buffer = new byte[1024]; if (File.Exists(FileName)) { File.Delete(FileName); } Stream outStream = File.Create(FileName); Stream inStream = response.GetResponseStream(); int l; do { l = inStream.Read(buffer, 0, buffer.Length); if (l > 0) outStream.Write(buffer, 0, l); } while (l > 0); outStream.Close(); inStream.Close(); } catch (Exception err) { string aa = err.ToString(); } return Value; } 为什么这么多问远程上传的问题!俺刚刚写好!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-09-23
展开全部
只能能你思路,代码是没空写的
webclient类,链接远程网站,遍历每个链接,分析每个页面的源码,抓取img标签,用正则获取src属性,下载回来保存到服务器上就可以了,也可以自动分析图片的大小信息以决定去留问题
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-09-23
展开全部
用正则表达式提取图片地址,以下供你参考
public string GetText(string str)
{
string mycontext = Regex.Replace(str, @"src[^>]*[^/].(?:jpg|bmp|gif|png|jpeg|JPG|BMP|GIF|JPEG)(?:\""|\')", new MatchEvaluator(SaveYuanFile));

return mycontext;
}

private string SaveYuanFile(Match m)
{
string imgurl = "";
string matchstr = m.Value;//str[i].ToString();
string tempimgurl = "";
tempimgurl = matchstr.Substring(5);
tempimgurl = tempimgurl.Substring(0, tempimgurl.IndexOf("\""));

Regex re = new Regex(@"^http://*");
if (re.Match(tempimgurl).Success)
{
matchstr = matchstr.Substring(5);
matchstr = matchstr.Substring(0, matchstr.IndexOf("\""));

//Response.Write(matchstr + "<br>");

//远程文件保存路径
string Folders = "/News/Images/";
string fullname = matchstr;

string huozui = fullname.Substring(fullname.LastIndexOf("."));
string filename = Common.GetFileName();
string path = Folders + filename + huozui;
//Folders+fullname.Substring(fullname.LastIndexOf("\\") + 1);

if (System.IO.File.Exists(System.Web.HttpContext.Current.Request.MapPath(path)))
System.IO.File.Delete(System.Web.HttpContext.Current.Request.MapPath(path));
GetHttpFile(matchstr, System.Web.HttpContext.Current.Request.MapPath(path));
imgurl = "src=\"" + path.Replace("~/", "") + "\"";
}
else
{
imgurl = matchstr;
}

return imgurl;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-09-23
展开全部
发代码没发上来,你加我,我给你传一个类文件,你直接调用就可以了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式