Tag: 下载

在浏览器中打开文件而不是下载它

我使用ssrs通过报表服务器使用ReportExecutionService.Render()生成一个resultStream字节数组,我目前使用以下代码为用户提供服务。 有没有办法可以使用这个相同的字节数组在新的浏览器窗口中自动打开报表,而不是进入保存/打开对话框? public void RenderReport (byte[] reportDigits, ReportItem reportItem) { HttpResponse response = HttpContext.Current.Response; response.Clear(); response.ContentType = reportItem.ReportMimeType; response.AddHeader(“Content-Disposition”, string.Format(“attachment; filename={0}”, reportItem.ExportName)); response.OutputStream.Write(reportDigits, 0, reportDigits.Length); response.End(); } 在过去,我使用了一个单独的ReportViewer.aspx页面,我先打开然后显示报告,但如果可能的话,我想在代码后面全部完成。 谢谢

C#WebClient使用Async并返回数据

好吧,我在使用DownloadDataAsync并将字节返回给我时遇到了问题。 这是我正在使用的代码: private void button1_Click(object sender, EventArgs e) { byte[] bytes; using (WebClient client = new WebClient()) { client.DownloadProgressChanged += new DownloadProgressChangedEventHandler(DownloadProgressChanged); bytes = client.DownloadDataAsync(new Uri(“http://example.net/file.exe”)); } } void DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e) { double bytesIn = double.Parse(e.BytesReceived.ToString()); double totalBytes = double.Parse(e.TotalBytesToReceive.ToString()); double percentage = bytesIn / totalBytes * 100; label1.Text = Math.Round(bytesIn / 1000) […]

C#文件下载已损坏

我在一个Web API项目的实用程序中有一些C#。 代码的上传部分工作正常; 我已经validation了获取服务器的文件与上传的文件相匹配。 但是,下载中发生的某些事情导致客户端将文件视为已损坏,当我执行差异时,我可以看到出现问题。 不幸的是,我无法弄清楚我做错了什么。 该实用程序的相关部分如下: public static HttpResponseMessage StreamResponse(this HttpRequestMessage request, Stream stream) { if (stream.CanSeek) stream.Position = 0;// Reset stream if possible HttpResponseMessage response = request.CreateResponse(HttpStatusCode.OK); response.Content = new StreamContent(stream); if (stream is FileStream) {// If this is a FileStream, might as well figure out the content type string mimeType = MimeMapping.GetMimeMapping(((FileStream)stream).Name); […]

从链接下载文件

我有一个使用C#的网页,我希望用户能够点击链接(或链接按钮或按钮,我不挑剔)并显示“另存为”对话框窗口,以便他们可以下载文件。 文件本身位于另一台服务器上,因此我必须使用绝对路径(i:\ division \ department \ publicfiles \ filename.pot)。 有谁知道这是怎么做到的吗? 我在这里查了一下这个问题,有人建议使用webClient.DownloadFile。 除非我不能使用它,因为它要求您已经知道用户希望将文件下载到其计算机上的位置。 基本上我正在寻找的是当您右键单击链接并选择“另存为”时会发生什么,但是当您左键单击链接时就会完成。 谢谢

Response.TransmitFile()的替代方案

所以我有一套我过去几天一直在玩的代码,我需要从服务器下载一个文件到客户端。 这是一个简单的部分,但我还需要在完成后刷新网格视图并在警报中显示文件已成功创建,但我发现下载的每一种方式都包含一行代码,这将是我的倒台。 到Response.End() Response.Close()或 ApplicationInstance.CompleteRequest() 所有这些都结束了当前的响应,或者我相信在ApplicationInstance的情况下,它将页面的所有源代码刷新到我试图下载的文本文件中。 下面是我从服务器下载文件的代码片段,以下是下载文件的源代码。 如果你有任何可以帮助解决这个永无止境的噩梦,那将非常感激。 //I brought everything together in an arraylist to write to file. asfinalLines = alLines.ToArray(typeof(string)) as string[]; string FilePath = HttpContext.Current.Server.MapPath(“~/Temp/”); string FileName = “test.txt”; // Creates the file on server File.WriteAllLines(FilePath + FileName, asfinalLines); // Prompts user to save file System.Web.HttpResponse response = System.Web.HttpContext.Current.Response; response.ClearContent(); response.Clear(); response.ContentType […]

无法通过c#.net下载exe文件

我设计了一个网站,当我点击一个按钮时,.EXE文件应该从我的计算机的特定路径下载。 但它不下载exe文件而不是下载网站的aspx页面。 我使用以下代码: WebClient myWebClient = new WebClient(); // Concatenate the domain with the Web resource filename. myWebClient.DownloadFile(“http://localhost:1181/Compile/compilers/sample2.exe”, “sample2.exe”);

c#WebClient DownloadProgresschanged TotalBytesToReceive = -1

我看过网络,看不到其他人有这个问题。 我使用的是使用DownloadFileAsync的Web客户端,当调用事件处理程序(DownloadProgressChanged)时,由于某种原因,TotalBytesToReceive(来自DownloadProgressChangedArgs)等于-1,从而阻止我使用进度条。 我正在检测<0,如果是这样的话,现在只需要猜100meg就可以了。 然而,BytesRecieved正在工作,文件实际上正在被下载,并且AsynCompletedEventHadnler似乎被调用,因此它知道它已完成(因此必须以某种方式知道TotalBytesToReceive?)。 我正在使用具有凭据和代理凭据的WebClient从通过内部网络的密码保护外部站点下载(因此需要两者) – 不确定这是否会有所不同。 我以前使用WebClient.DownloadData获取字节数据并单独保存并将其放在后台工作程序中,它工作正常(如果非常慢)但我无法以这种方式显示进度。 此外,DownloadFileAsync似乎为我做了所有这些,因此节省了大量代码。 private void DLFile_AsyncWithStatus(string DLlocation, string un, string pw, string destLoc) { WebClient wc = new WebClient(); wc.Credentials = new NetworkCredential(un, pw); // website login wc.Proxy.Credentials = new NetworkCredential(ProxyUsername, ProxyPassword, ProxyDomain); //proxy login Uri uri = new Uri(DLlocation); // Specify that the DownloadFileCallback method gets called when […]

强制下载ASP.Net

在ASP.Net(使用C#)中,我正在尝试使用纯文本创建一个.DAT文件并将其发送到浏览器并强制下载。 我尝试了几件事,但我无法让它发挥作用。 在我的aspx文件中有一个ImageButton 在OnClick方法中,我正在尝试创建该文件并将其发送到浏览器。 protected void btnSave_OnClick(object sender, EventArgs e) { string file = “test.dat”; string fileName = “~\\Stages\\Broekx\\Databanken\\” + file; FileStream fs = new FileStream(MapPath(fileName), FileMode.Open); long cntBytes = new FileInfo(MapPath(fileName)).Length; byte[] byteArray = new byte[Convert.ToInt32(cntBytes)]; fs.Read(byteArray, 0, Convert.ToInt32(cntBytes)); fs.Close(); ImageButton btnSave = (ImageButton)FormViewStagesDummy.FindControl(“btnSave”); btnSave.Visible = false; File.Delete(Server.MapPath(fileName)); if (byteArray != null) { this.Response.Clear(); […]

WebClient DownloadFileAsync挂起

美好的一天。 我正在使用DownloadFileAsync处理文件下载器类。 在正常情况下一切正常。 但是当我下载文件并禁用网络连接时,下载进度只是停止无限时间,不会引发任何错误或调用任何回调。 任何想法如何处理这种情况? 非常感谢。 _client.Proxy = WebRequest.DefaultWebProxy; _client.DownloadProgressChanged += (sender, argv) => { actionCallback(argv.ProgressPercentage); } _client.DownloadFileCompleted += (sender, argv) => { if (argv.Error != null) { _exc = argv.Error; } set event } Task.Factory.StartNew(() => { _client.DownloadFileAsync(request, targetFileName); thread sync if (_exc != null) { logger.ErrorException(exc); throw; } 问题出现在Vista和2k8下。 在Win7上一切正常。

如何在ASP.NET MVC中将XML文件发送到客户端

在ASP.NET MVC中,我有一个数据库表。 我希望在某个视图页面上有一个按钮,如果某个用户单击该按钮,我的应用程序将生成包含数据库中所有行的XML文件。 然后,应将包含XML的文件发送到客户端,以便用户看到下载弹出窗口。 同样,我想允许用户上传一个XML文件,其内容将被添加到数据库中。 让用户上传和下载文件的最简单方法是什么? 感谢所有的答案 编辑:这是我的方法: public FileContentResult Download() { if(model.Series.Count() < 1) { byte[] content = new byte[0]; return new FileContentResult(content, "Series"); } XmlSerializer serializer = new XmlSerializer(model.Series.FirstOrDefault().GetType()); MemoryStream xmlStream = new MemoryStream(); foreach (Series s in model.Series) { serializer.Serialize(xmlStream, s); } byte[] content2 = new byte[xmlStream.Length]; xmlStream.Position = 0; xmlStream.Read(content2, 0, […]