Tag: 下载

从Azure Blob存储下载文件

我有一个应用程序,允许用户上传照片,这些照片存储在Azure Blob存储中。 用户还可以查看这些照片。 要查看它们,我们希望应用程序将图像下载到默认下载位置。 目前,上传工作完美。 但是我为Azure API找到的下载function似乎没有做任何事情。 此外,我无法真正指定下载位置,因为此function需要在台式机/笔记本电脑以及具有不同默认目录的移动设备上运行。 这似乎应该很简单,但我找不到任何可以帮助我的东西。 以下是我的代码示例: CloudBlobContainer container = blobClient.GetContainerReference(“photos”); CloudBlob blob = container.GetBlobReference(photo.BlobUrl); //copy blob from cloud to local gallery blob.DownloadToFile(photo.ImageName); blob.DownloadToFile(photo.ImageName); 导致服务器请求但没有任何反应,也就是没有下载文件。

通过c#按下Internet Explorer的“文件下载对话框”的保存按钮

我正在研究Internet Explorer自动化,其中一部分涉及从asp 2.0上托管的站点下载文件并使用基于表单的身份validation,因此为了创建端到端自动化,我使用了浏览器自动化。 我能够到达我可以点击一个带有浏览器“文件下载”对话框的URL的步骤,然后我试图利用SendKeys点击保存按钮,但无济于事不工作 下面是我使用FindWindow方法获取文件下载对话框的hWnd指针的代码,然后使用setActiveWindow使其成为活动窗口,以便SendKeys命令对其起作用,然后使用SendKeys我尝试发送Alt +但它没有用。 我观察到,Tab,Escape和Enter工作正常,但是Enter on Save按钮不起作用。 [DllImport(“user32.dll”, SetLastError = true)] static extern IntPtr FindWindow(string lpClassName, string lpWindowName); [DllImport(“user32.dll”)] [return: MarshalAs(UnmanagedType.Bool)] static extern bool SetForegroundWindow(IntPtr hWnd); [DllImport(“user32.dll”, SetLastError = true)] static extern IntPtr SetActiveWindow(IntPtr hWnd); private void Form1_Load(object sender, EventArgs e) { IntPtr hwnd = FindWindow(null, “File Download”); IntPtr nullptr = (IntPtr)0; if […]

使用HttpClient进行异步文件下载

我有一个服务,它返回一个csv文件到POST请求。 我想使用异步技术下载所述文件。 虽然我可以获取该文件,但我的代码有几个突出的问题和问题: 1)这真的是异步的吗? 2)有没有办法知道内容的长度,即使它是以分块格式发送的? 想想进度吧)。 3)如何最好地监控进度,以便在所有工作完成之前推迟程序退出。 using System; using System.IO; using System.Net.Http; namespace TestHttpClient2 { class Program { /* * Use Yahoo portal to access quotes for stocks – perform asynchronous operations. */ static string baseUrl = “http://real-chart.finance.yahoo.com/”; static string requestUrlFormat = “/table.csv?s={0}&d=0&e=9&f=2015&g=d&a=4&b=5&c=2000&ignore=.csv”; static void Main(string[] args) { while (true) { Console.Write(“Enter a symbol […]

使用没有url的WebBrowser自动下载文件

我一直在使用System.Windows.Forms.WebBrowser编写一个用C#编写的WebCrawler。 我试图从网站上下载文件并将其保存在本地计算机上。 更重要的是,我希望这是完全自动化的。 可以通过单击调用javascript函数的按钮来启动文件下载,该函数会激活下载,显示“是否要打开或保存此文件?”对话框。 我绝对不想手动点击“另存为”,并输入文件名。 我知道HttpWebRequest和WebClient的下载function,但由于下载是用javascript启动的,我现在知道该文件的URL。 Fyi,javascript是一个doPostBack函数,可以更改某些值并提交表单。 我已经尝试将重点放在WebBrowser的save as对话框上,从而在那里自动化它,但没有取得多大成功。 我知道有一种方法可以强制下载保存,而不是通过向http请求添加标头来保存或打开,但我不知道如何指定要下载的文件路径。

该操作已超时使用WebClient.DownloadFile并更正了url

我批量上传产品到数据库。 我将图片url下载到用于产品的网站。 我编写的代码在前25次迭代中工作正常(由于某种原因总是那个数字),但随后抛出一个System.Net.WebException“操作已经超时”。 if (!File.Exists(localFilename)) { using (WebClient Client = new WebClient()) { Client.DownloadFile(remoteFilename, localFilename); } } 我检查了它正在请求的远程URL,它是一个返回图像的有效图像URL。 此外,当我使用调试器逐步执行它时,我没有收到超时错误。 救命! ;)

下载多个文件WebClient

我正在尝试下载多个文件,但它没有像我希望的那样工作。 有人可以告诉我这个脚本有什么问题,因为我已经尝试了很多东西而且真的不知道该怎么做了。 public static void DownloadFile(string url) { WebClient client = new WebClient(); var name = url.Substring(url.LastIndexOf(‘/’)).Remove(0, 1); foreach (var item in urls) { client.DownloadFile(item, “C:\\” + name); } } private void btnGo_Click(object sender, EventArgs e) { urls.Add(“url1”); urls.Add(“url2”); urls.Add(“url3”); Parallel.ForEach(urls, new ParallelOptions { MaxDegreeOfParallelism = 10 }, DownloadFile); } using (var sr = new […]

进度条和webclient

我有一个大约10-30秒的事件,即从页面下载信息(流量很大),修改它然后使用WebClient将其保存到磁盘上。 因为它需要很长时间,所以我想添加一个进度条或制作一个更新标签(类似于更新..)以指示进度。 有人可以指导我如何做到这一点? WebClient中是否有任何可用于处理此事件的事件?

计算当前(非平均)下载速度

在我的下载管理器应用程序中,我使用下面的代码来计算当前的传输速率: TimeSpan interval = DateTime.Now – lastUpdateTime; downloadSpeed = (int)Math.Floor((double)(DownloadedSize + cachedSize – lastUpdateDownloadedSize) / interval.TotalSeconds); lastUpdateDownloadedSize = DownloadedSize + cachedSize; lastUpdateTime = DateTime.Now; 这大部分按照我想要的方式工作(我每4秒左右更新一次速度),但下载速度总会出现一些疯狂的峰值,因为它会波动。 我的平均下载速度约为600 kB / s,有时它显示10.25 MB / s甚至负值,如-2093848 B / s。 怎么会这样? 计算实时下载速率的最佳方法是什么? 我对平均速率(DownloadedSize / TimeElapsed.TotalSeconds)不感兴趣,因为它没有给出真实的结果。

如何从重定向的URL下载文件?

我正在尝试从不包含该文件的链接下载文件,而是重定向到包含实际文件的另一个(临时)链接。 目标是获得程序的更新副本,而无需打开浏览器。 链接是: http://www.bleepingcomputer.com/download/minitoolbox/dl/65/ 我试过使用WebClient,但它不起作用: private void Button1_Click(object sender, EventArgs e) { WebClient webClient = new WebClient(); webClient.DownloadFileCompleted += new AsyncCompletedEventHandler(Completed); webClient.DownloadFileAsync(new Uri(“http://www.bleepingcomputer.com/download/minitoolbox/dl/65/”), @”C:\Downloads\MiniToolBox.exe”); } 在搜索并尝试了许多事情之后,我发现了这个涉及使用HttpWebRequest.AllowAutoRedirect的解决方案。 通过具有重定向的代码下载文件? // Create a new HttpWebRequest Object to the mentioned URL. HttpWebRequest myHttpWebRequest=(HttpWebRequest)WebRequest.Create(“http://www.contoso.com”); myHttpWebRequest.MaximumAutomaticRedirections=1; myHttpWebRequest.AllowAutoRedirect=true; HttpWebResponse myHttpWebResponse=(HttpWebResponse)myHttpWebRequest.GetResponse(); 这似乎正是我正在寻找的,但我根本不知道如何使用它:/我猜这个链接是WebRequest.Create的参数。 但是如何将文件检索到我的目录? 是的,我是noob …先谢谢你的帮助。

从FileResult下载文件而不保存到磁盘

我正在使用MVC 4。 我的控制器中有一个方法可以按需生成CSV文件,我希望用户可以下载该文件,而无需将其保存到服务器端的磁盘上。 所以我在File()对象上传递一个MemoryStream,以避免首先将文件保存到磁盘,然后给他下载路径。 控制器方法: [HttpGet] public ActionResult GenerateCsv(string data) var sb = new StringBuilder(); sb = GetCsvReportToString(data); var stream = new MemoryStream(Encoding.UTF8.GetBytes(sb.ToString())); return this.File(stream, “text/csv”, “ReportCsv.csv”); } sb(StringBuilder)具有正确的数据,因为我已经调试并确认了它。 我的javascript代码: window.open(generateFileLink + ‘?data=’ + dataToSend, ‘_blank’); 该窗口实际上已打开,下载对话框出现但出现错误,表示无法从localhost下载: 名称在下载“ReportToCsv”中有所不同,因为我在问题中没有使用真实姓名,但无关紧要。 有人可以帮忙吗?