2012-04-23 4 views
0

Я разрабатываю довольно простой визуальный WebPart для SharePoint Foundation Server 2010. Предполагается загрузить файл изображения на сервер SharePoint и отобразить его впоследствии. Хотя я могу успешно загрузить файл в ранее созданную библиотеку документов, файл не может отображаться (IE показывает красный крест). Когда я загружаю точную копию файла с помощью интерфейса SharePoint, его можно открыть. Я надеюсь, что кто-то скажет мне, что мне не хватает.Загруженный файл изображения в SharePoint не отображается

Ниже вы можете найти код, который успешно загружает файл на сервер:

SPContext.Current.Web.AllowUnsafeUpdates = true; 
     string path = ""; 
     string[] fileName = filePath.PostedFile.FileName.Split('\\'); 
     int length = fileName.Length; 
     // get the name of file from path 
     string file = fileName[length - 1]; 
     SPWeb web = SPContext.Current.Web; 
     SPFolderCollection folders = web.Folders; 
     SPFolder folder; 
     SPListCollection lists = web.Lists; 
     SPDocumentLibrary library; 
     SPList list = null; 
     Guid guid = Guid.Empty; 

     if (lists.Cast<SPList>().Any(l => string.Equals(l.Title, "SPUserAccountDetails-UserImages"))) 
     { 
      list = lists["SPUserAccountDetails-UserImages"]; 
     } 
     else 
     { 
      guid = lists.Add("SPUserAccountDetails-UserImages", "Enthält Mitarbeiter-Fotos", SPListTemplateType.DocumentLibrary); 
      list = web.Lists[guid]; 
     } 

     library = (SPDocumentLibrary)list; 

     folder = library.RootFolder.SubFolders.Add("SPUserAccountDetails"); 

     SPFileCollection files = folder.Files; 
     Stream fStream = filePath.PostedFile.InputStream; 
     byte[] MyData = new byte[fStream.Length]; 
     Stream stream = new MemoryStream(); 
     stream.Read(MyData, 0, (int)fStream.Length); 
     fStream.Close(); 
     bool bolFileAdd = true; 
     for (int i = 0; i < files.Count; i++) 
     { 
      SPFile tempFile = files[i]; 
      if (tempFile.Name == file) 
      { 
       folder.Files.Delete(file); 
       bolFileAdd = true; 
       break; 
      } 
     } 
     if (bolFileAdd) 
     { 
      SPFile f = files.Add(file, MyData); 

      f.Item["ContentTypeId"] = "image/jpeg"; 
      f.Item["Title"] = file; 
      f.Item.SystemUpdate(); 

      SPContext.Current.Web.AllowUnsafeUpdates = false; 
      imgPhoto.ImageUrl = (string)f.Item[SPBuiltInFieldId.EncodedAbsUrl]; 
     } 

ответ

0

Никогда не возражаете. Мой код, кажется, возится с содержимым файла. Я отправлю решение позже.

редактировать: Я глупо и жалко: -/

я заменил это:

Stream fStream = filePath.PostedFile.InputStream; 
byte[] MyData = new byte[fStream.Length]; 
Stream stream = new MemoryStream(); 
stream.Read(MyData, 0, (int)fStream.Length); 
fStream.Close(); 

с этим:

Stream fStream = filePath.PostedFile.InputStream; 
byte[] MyData = new byte[fStream.Length]; 
BinaryReader binaryReader = new BinaryReader(fStream); 
MyData = binaryReader.ReadBytes((Int32)fStream.Length); 
fStream.Close(); 
binaryReader.Close(); 

и вдруг все это сработало, -)

Смежные вопросы