2015-01-23 4 views
1
string Idd = Convert.ToString(Page.Request.QueryString["Id"]); 
    string DocName = Convert.ToString(Page.Request.QueryString["Name"]); 
    #region 
    try 
    { 
     SPSecurity.RunWithElevatedPrivileges(delegate() 
      { 
       using (SPSite osite = new SPSite(SPContext.Current.Web.Url)) 
       { 
        using (SPWeb web = osite.OpenWeb()) 
        { 
         //LinkButton lnkView = (LinkButton)e.CommandSource; 
         //string Name = lnkView.CommandArgument; 
         //string ID = lnkView.ID; 
         SPDocumentLibrary library = web.Lists["Shared Documents"] as SPDocumentLibrary; 
         string filepath = library.RootFolder.Url; 
         string filename = DocName; 
         string IDofDoc = Idd; 

         //SPFile file = web.GetFile(library.RootFolder.Url + "/No Easy Day.pdf"); 
         SPFile file = web.GetFile(filepath + "/" + filename); 

         Stream stream = file.OpenBinaryStream(); 
         FileStream fileStream = new FileStream(filename, FileMode.OpenOrCreate, FileAccess.Write); 
         //string filepath1 = fileStream.Name.Replace(fileStream.Name, @"~\\SAIDI\\" + "Asset//"); 
         #region 
         //string filepath1 = (sender as Button).Command; 
         //Response.ContentType = ContentType; 
         //filepath1=MapPath(@"~\\SAIDI\\" +"Asset//"+filepath); 
         //Response.AppendHeader("Content-Disposition", "attachment;filename=" + Path.GetFullPath()); 
         //Response.WriteFile(filepath1); 
         //Response.End();       
         //duplicate 
         #endregion 
         int buffer = 4096; 
         int read = buffer; 
         byte[] bytes = new byte[buffer]; 
         while (read == buffer) 
         { 
          read = stream.Read(bytes, 0, buffer); 
          fileStream.Write(bytes, 0, read); 
          if (read < buffer) break; 
         } 
         stream.Dispose(); 
         fileStream.Dispose(); 
        } 
       } 
      }); 
    } 
    catch (Exception ex) 
    { 
     Response.Write(ex.Message + "<br>" + ex.StackTrace); 
    } 

Вопрос: - Скачивали Документ загружаетсяКак изменить папку назначения из загруженного документа

C:\windows\system32\inetsrv 
  1. Как изменить путь к файлу назначения?
  2. Я разместил этот код на рабочем сервере, но файл не загружен.

Какое решение для них?

ответ

0

Чтобы ответить на второй вопрос: Использовать-инструкцию - это эффектно try/catch-block (с некоторой дополнительной логикой, связанной с объектом-утилизатором). Я бы предложил заменить использование явным методом try/catch-blocks. Таким образом, вы можете поймать исключения и записать их в файл (или что угодно, что необходимо).

Sascha

-1

1) Как я могу изменить путь к файлу назначения?

Вы можете пройти путь назначения в качестве первого параметра в FileStream constructor

Например:

FileStream fileStream = new FileStream("D:\\" + filename, FileMode.OpenOrCreate, FileAccess.Write); 

, если вы хотите использовать общее расположение, вы можете использовать Environment.SpecialFolder

Пример:

FileStream fileStream = new FileStream(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\\" + filename, FileMode.OpenOrCreate, FileAccess.Write); 

2) Я разместил этот код на рабочем сервере, но файл не загружен

Я думаю, это вопрос с разрешением. Попробуйте написать файл в другом каталоге?

+0

благодарю вас за ур ответ. Первый раз это сработало. после этого, я получаю ниже ошибки. «Устройство не готово». – saidireddy

+0

Хорошо. Я получил ответ. в моей машине нет D-диска. я дал F.but, как я могу упомянуть общее местоположение, такое как Downloads, library и т. д., если любой пользователь хочет скачать, он столкнется с такой же проблемой. предложите мне загрузить: «Загрузка файлов (обычно это в каждую систему)». – saidireddy

+0

@saidireddy: см. мой отредактированный ответ –

0
string Idd = Convert.ToString(Page.Request.QueryString["Id"]); 
    string DocName = Convert.ToString(Page.Request.QueryString["Name"]); 
    #region 
    try 
    { 
     SPSecurity.RunWithElevatedPrivileges(delegate() 
      { 
       using (SPSite osite = new SPSite(SPContext.Current.Web.Url)) 
       { 
        using (SPWeb web = osite.OpenWeb()) 
        { 
         //LinkButton lnkView = (LinkButton)e.CommandSource; 
         //string Name = lnkView.CommandArgument; 
         //string ID = lnkView.ID; 
         SPDocumentLibrary library = web.Lists["Shared Documents"] as SPDocumentLibrary; 
         string filepath = library.RootFolder.Url; 
         string filename = DocName; 
         string IDofDoc = Idd; 

         //SPFile file = web.GetFile(library.RootFolder.Url + "/No Easy Day.pdf"); 
         SPFile file = web.GetFile(filepath + "/" + filename); 

         Stream stream = file.OpenBinaryStream(); 

         filename= Path.Combine(filepath, filename); 

         FileStream fileStream = new FileStream(filename, FileMode.OpenOrCreate, FileAccess.Write); 
         //string filepath1 = fileStream.Name.Replace(fileStream.Name, @"~\\SAIDI\\" + "Asset//"); 
         #region 
         //string filepath1 = (sender as Button).Command; 
         //Response.ContentType = ContentType; 
         //filepath1=MapPath(@"~\\SAIDI\\" +"Asset//"+filepath); 
         //Response.AppendHeader("Content-Disposition", "attachment;filename=" + Path.GetFullPath()); 
         //Response.WriteFile(filepath1); 
         //Response.End();       
         //duplicate 
         #endregion 
         int buffer = 4096; 
         int read = buffer; 
         byte[] bytes = new byte[buffer]; 
         while (read == buffer) 
         { 
          read = stream.Read(bytes, 0, buffer); 
          fileStream.Write(bytes, 0, read); 
          if (read < buffer) break; 
         } 
         stream.Dispose(); 
         fileStream.Dispose(); 
        } 
       } 
      }); 
    } 
    catch (Exception ex) 
    { 
     Response.Write(ex.Message + "<br>" + ex.StackTrace); 
    }