Rest文件下载

 public void DownloadFile(string fileId)
        {
            //Stream fileStream = null;
            try
            {
                int fileID = Convert.ToInt32(fileId);
                string RelatePath = fileInfoBLL.GetRelatePath(fileID);
                string fileFullPath = filePath + "\\" + RelatePath;
                string fileName = fileInfoBLL.GetFileName(fileID);
                var response = HttpContext.Current.Response;
                response.Clear();
                response.Buffer = true;
                //fileName = System.Web.HttpUtility.UrlEncode(fileName, System.Text.Encoding.GetEncoding("UTF-8"));
                response.AppendHeader("Content-Disposition", "attachment;filename=" + fileName);
                response.ContentEncoding = System.Text.Encoding.UTF8;
                response.Charset = "UTF-8";
                response.WriteFile(fileFullPath);
            }
            catch (Exception ex)
            {
                ExceptionHandler.ExceptionHelper.Instance.HandleException(ex);
            }
        }

将字符串转换成指定编码格式:

1   string fileName = System.Web.HttpUtility.UrlEncode("要转换的字符串", System.Text.Encoding.GetEncoding("UTF-8"));

2 string gbStr = System.Text.Encoding.GetEncoding("gb2312").GetString(System.Text.Encoding.Default.GetBytes('xxx'));

另一种:

 1  private void DownloadFile(string fileName, string filePath)
 2         {
 3             try
 4             {
 5                 if (!string.IsNullOrEmpty(filePath))
 6                 {
 7                     if (string.IsNullOrEmpty(fileName))
 8                     {
 9                         fileName = filePath.Substring(filePath.LastIndexOf("\\") + 1);
10                     }
11 
12                     context.Response.Clear();
13                     context.Response.Buffer = true;
14                     context.Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlPathEncode(fileName));
15                     context.Response.ContentEncoding = System.Text.Encoding.UTF8;
16                     context.Response.Charset = "UTF-8";
17                     //context.Response.ContentType = "application/vnd.ms-excel";
18                     context.Response.WriteFile(UploadFileSavePath + "\\" + filePath);
19                 }
20             }
21             catch (Exception ex)
22             {
23                 ExceptionHelper.Instance.HandleException(ex);
24                 context.Response.Write("{\"bizSuccess\":false,\"msg\":\"下载文件时发生错误!\"}");
25             }
26 
27             context.Response.Flush();
28             context.Response.End();
29         }

 利用WebOperationContext.Current.OutgoingResponse下载

public Stream DownloadFile(string token)
        {
            Stream fileStream = null;
            try
            {
                //FilesInfo filesInfo = m_FileDAL.Find<FilesInfo>(fileId);
                //string fileFullPath = filesInfo.FileUrl + filesInfo.FileName;
                //string fileFullPath = m_FileDAL.Find<FilesInfo>(fileId).FileUrl;
                //string fileFullPath = @"C:\Users\chen\Desktop\reader.txt";
                string fileFullPath = @"C:\Users\chen\Desktop\HSF第四次读后感.docx";
                //string fileName = "reader.txt";
                string fileName = "HSF第四次读后感.docx";
                fileStream = File.OpenRead(fileFullPath);
                var response = WebOperationContext.Current.OutgoingResponse;
                response.Headers.Add("Content-Disposition", "attachment;filename=" + HttpUtility.UrlPathEncode(fileName));
                response.ContentType = "application/octet-stream";               
                //var message = WebOperationContext.Current.CreateStreamResponse(fileStream, "application/octet-stream");
                //message.Headers.Add(System.ServiceModel.Channels.MessageHeader.CreateHeader("Content-Disposition", "", "attachment;filename=" + HttpUtility.UrlPathEncode(fileName)));               
             //response.Clear();
                  //response.Buffer = true;
                  //response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlPathEncode(fileName));
                  //response.ContentEncoding = System.Text.Encoding.UTF8;
                  //response.Charset = "UTF-8";
               
                //result.Success = true;
                //result.ErrorMessage = string.Format("{0}下载成功!", fileId);
                //result.Data = fileStream;
            }
            catch (Exception ex)
            {
               
                //result.Success = false;
                //result.ErrorMessage = string.Format("{0}下载失败!", fileId);
                //result.Data = null;
            }

            return fileStream;
        }

 

 

转载于:https://www.cnblogs.com/lihongchen/p/3699153.html

Rest文件下载限制并发数量可以通过多种方法来实现。 首先,可以使用服务器配置来限制并发数量。服务器可以设置最大同时处理请求数量的属性,例如Apache服务器的MaxClients属性。这样可以确保服务器能够在一定范围内同时处理的请求数量,并防止过多的并发请求导致服务器资源不足或性能下降。通过调整这个属性,可以限制Rest文件下载的并发数量。 其次,可以在应用程序级别进行限制。在处理Rest文件下载的代码中,可以使用线程池或任务队列等机制来控制并发数量。通过设置线程池大小或任务队列长度,可以限制同时执行下载任务的数量。当达到设定的限制数量时,新的下载请求将被排队等待执行。这种方式可以在应用程序内部灵活地控制并发数量,并且可以根据实际情况进行调整。 另外,可以在客户端进行限制。客户端可以在代码中控制发起并发的请求数量。比如,在使用Java进行Rest文件下载时,可以通过控制线程池的大小来限制并发数量。客户端还可以根据实际需求和网络状况,动态调整并发数量,从而更好地管理资源和提高下载性能。 总的来说,Rest文件下载限制并发数量可以通过服务器配置、应用程序级别和客户端控制等多种方式来实现。根据具体需求和实际情况选择合适的方式,并进行相应的配置和调整,以达到最佳的下载效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值