zoukankan      html  css  js  c++  java
  • SharePoint中的文件下载(.Net文件下载,支持大文件)

    今天折腾了一天,就在折腾这个下载.由于SharePoint中的文件都是存在数据库中的,没有实体路径,导致好多种方式的文件下载不能用,只能使用写出文件流的方式来下载,进过百般折腾后找到以下代码,在此作为记录

    下面是原始代码:

     System.IO.Stream iStream = null;
     
     // Buffer to read 10K bytes in chunk:
     byte[] buffer = new Byte[10000];
     
     // Length of the file:
     int length;
     
     // Total bytes to read:
     long dataToRead;
     
     // Identify the file to download including its path.
     string filepath = "DownloadFileName";
     
     // Identify the file name.
     string filename = System.IO.Path.GetFileName(filepath);
     
     try {
         // Open the file.
         iStream = new System.IO.FileStream(filepath, System.IO.FileMode.Open,
         System.IO.FileAccess.Read, System.IO.FileShare.Read);
     
     
         // Total bytes to read:
         dataToRead = iStream.Length;
     
         Response.ContentType = "application/octet-stream";
         Response.AddHeader("Content-Disposition", "attachment; filename=" + filename);
     
         // Read the bytes.
         while (dataToRead > 0) {
             // Verify that the client is connected.
             if (Response.IsClientConnected) {
                 // Read the data in buffer.
                 length = iStream.Read(buffer, 0, 10000);
     
                 // Write the data to the current output stream.
                 Response.OutputStream.Write(buffer, 0, length);
     
                 // Flush the data to the HTML output.
                 Response.Flush();
     
                 buffer = new Byte[10000];
                 dataToRead = dataToRead - length;
             } else {
                 //prevent infinite loop if user disconnects
                 dataToRead = -1;
             }
         }
     } catch (Exception ex) {
         // Trap the error, if any.
         Response.Write("Error : " + ex.Message);
     } finally {
         if (iStream != null) {
             //Close the file.
             iStream.Close();
         }
     }

    以下是修改过的SharePoint代码:

     System.IO.Stream iStream = null;
     
     // Buffer to read 10K bytes in chunk:
     byte[] buffer = new Byte[10000];
     SPFile file = SPContext.Current.Web.GetFile("FileGuid Or FileUrl");
     // Length of the file:
     int length;
     
     // Total bytes to read:
     long dataToRead;
     
     
     
     
     // Identify the file name.
     string filename = file.Name;
     
     try {
         // Open the file.
         iStream = file.OpenBinaryStream();
         
      
     
         // Total bytes to read:
         dataToRead = file.Length;
     
         Response.ContentType = "application/octet-stream";
         Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(file. Name, Syste m.Text.Encoding.UTF8));
     
         // Read the bytes.
         while (dataToRead > 0) {
             // Verify that the client is connected.
             if (Response.IsClientConnected) {
                 // Read the data in buffer.
                 length = iStream.Read(buffer, 0, 10000);
     
                 // Write the data to the current output stream.
                 Response.OutputStream.Write(buffer, 0, length);
     
                 // Flush the data to the HTML output.
                 Response.Flush();
     
                 buffer = new Byte[10000];
                 dataToRead = dataToRead - length;
             } else {
                 //prevent infinite loop if user disconnects
                 dataToRead = -1;
             }
         }
     } catch (Exception ex) {
         // Trap the error, if any.
         Response.Write("Error : " + ex.Message);
     } finally {
         if (iStream != null) {
             //Close the file.
             iStream.Close();
         }
     }
  • 相关阅读:
    HDU 1698 Just a Hook (线段树模板题-区间求和)
    spring定时任务详解(@Scheduled注解)
    spring定时任务(@Scheduled注解)
    java反射实现接口重试
    微信开发者工具在线调试
    消息队列应用场景
    Redis、Memcache和MongoDB的区别
    下拉框多选实现回显及sql
    MySQL 中 You can't specify target table '表名' for update in FROM clause错误解决办法
    catch异常
  • 原文地址:https://www.cnblogs.com/masahiro/p/10130412.html
Copyright © 2011-2022 走看看