Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用webclient在c#中下载图像并使用Javascript从aspx页面获取图像_C#_Javascript_Asp.net - Fatal编程技术网

如何使用webclient在c#中下载图像并使用Javascript从aspx页面获取图像

如何使用webclient在c#中下载图像并使用Javascript从aspx页面获取图像,c#,javascript,asp.net,C#,Javascript,Asp.net,我在这里和那里看到了这些问题的各种答案的片段,但我无法让它们中的任何一个起作用 代码的目的是让我可以通过aspx页面从互联网下载图像。因此,我将从Javascript调用aspx页面,该页面应该提供数据,然后将数据输入到图像元素中,但到目前为止还没有骰子 我正在尝试: 在GetHotlink.aspx页面中: System.Net.WebClient wc = new System.Net.WebClient(); byte[] data = wc.DownloadData("http://ww

我在这里和那里看到了这些问题的各种答案的片段,但我无法让它们中的任何一个起作用

代码的目的是让我可以通过aspx页面从互联网下载图像。因此,我将从Javascript调用aspx页面,该页面应该提供数据,然后将数据输入到图像元素中,但到目前为止还没有骰子

我正在尝试: 在GetHotlink.aspx页面中:

System.Net.WebClient wc = new System.Net.WebClient();
byte[] data = wc.DownloadData("http://www.html5canvastutorials.com/demos/assets/darth-vader.jpg");
Context.Response.Clear();
Context.Response.ContentType = "image/JPEG";
Context.Response.OutputStream.Write(data, 0, data.Length);
Context.Response.Flush();
Context.Response.Close();
Context.Response.End();
在Javascript中:

var url = "GetHotlink.aspx";
var tmptxt = call_genpic(url);          // call server with filename and minimum layer value.
var imageObj = new Image();
imageObj.setAttribute('src', 'data:image/jpeg;base64,' + tmptxt);
document.body.appendChild(imageObj);


function call_genpic(url) {
    var reqObj = createRequest();
    reqObj.onreadystatechange = function () {
        if (reqObj.readyState == 4) {
            //callback  
        }
    }
    reqObj.open("GET", url, false);
    reqObj.send(null);
    var V = "";
    V = reqObj.responseText;
    return V;
    return(reqObj.responseText);
}

我可以看到,当我调用aspx页面时,我从服务器返回了大量数据,但是我添加到DOM中的图像显示为断开的图像图标。没有达斯维德!我怀疑达斯在这条路上的某个地方使用了错误的格式,或者是使用了错误的标题。有什么想法吗?

您正在使用base64数据作为图像源,但没有将响应编码为base64字符串。用于将字节数组转换为字符串,并将其作为字符串而不是二进制数据返回给客户端


此外,您的JavaScript代码看起来也乱七八糟。你为什么一个接一个地有两个报税表。您应该创建图像并在回调中设置其数据(在您有评论的地方)

我首先将webclient中的内容保存到一个文件中,然后查看图像是否显示,确保内容正确。然后,如果javascript工作正常,就转到javascript端。@Hammerstein,好主意。我使用filestream和二进制编写器将数据数组转储到一个文件中,结果图像看起来很好。所以我可以说数据数组填充正确。Javascript方面在我看来也不错。当我使用一个表示jpg图像的字符串而不是来自服务器端的数据时,我添加到DOM中的image元素看起来很好。所以这两者之间还是有问题的@Hammerstein将图像保存到文件是一种低效且更复杂的方法。您应该授予服务器上临时文件夹的写入权限,应该有清除临时映像的方法,等等。直接提供数据更好。当然,可能还有其他问题使保存到磁盘成为一个不错的选择,比如缓存或支持不支持base64的浏览器images@Stilgar并不是说它是一个永久性的解决方案,只是作为调试的一个步骤。我同意,保存它将是低效的。谢谢。base64编码是我所缺少的。谢谢你的代码提示。。。清理工作已经过期了!