4

共有ドキュメントの下の SharePoint サイトに保存する必要がある画像があります

さまざまな理由から、画像は system.drawing.image に配置し、sharepoint サイト内の共有ドキュメントに保存する必要があります。ローカル ハード ディスクに保存する必要はありません。

何か解決策はありますか?

これまでのところ、私は試しています

 MemoryStream ms = new MemoryStream();
 imageIn.Save(ms,System.Drawing.Imaging.ImageFormat.Gif);
 byte[] imagebyte = ms.ToArray(); 

次に、ストリームリーダーのSavebinary機能ですが、喜びはありません

4

2 に答える 2

3

しばらくして、画像ライブラリを回避する解決策を見つけることができました

   void imageSave(System.Drawing.Image imageTobeSaved)
    {
        using (SPSite site = new SPSite("http://sptestsite/"))
        {
            using (SPWeb web = site.RootWeb)
            {
                SPFolder myLibrary = web.Folders["Shared%20Documents"];


                var stream = new System.IO.MemoryStream();
                string filename = "picture.jpg";          
                MemoryStream ms = new MemoryStream();
                imageTobeSaved.Save(ms, System.Drawing.Imaging.ImageFormat.jpg);
                byte[] ImageByte = ms.ToArray();

                SPFile spfile = myLibrary.Files.Add(filename, ImageByte);
                myLibrary.Update();


            }
        }
    }
于 2012-05-22T10:03:25.190 に答える
1

ここでハードコードされた設定の一部を変更する必要があります。

 public void addToSharepointImageList(string folderName, string fileName, byte[] content)
    {
        string path = @"\\yoursite\yourlistname\";
        string baseSharePointPath = "http://yoursite/";
        string listName = "yourlistname"; 
        SharePointImagingService.Imaging svc = null;

        try
        {
            path += folderName;
            if (!Directory.Exists(path))
            {
                Directory.CreateDirectory(path);
            }

            #region create sharepoint service

            svc = new SharePointImagingService.Imaging();

            NetworkCredential nc = new NetworkCredential("username", "password", "domain");
            svc.Credentials = nc;
            //svc.Credentials = System.Net.CredentialCache.DefaultCredentials;
            svc.Url = baseSharePointPath + listName+ "/_vti_bin/imaging.asmx";
            svc.Discover();

            #endregion

            svc.Upload(baseSharePointPath + listName, folderName, content, fileName, true);
        }
        catch (Exception e)
        {
            //deal with error
        }
        finally
        {
            svc.Dispose();
        }

    }

または、ファイルをイメージ以外のリストに直接保存しようとしている場合は、共有ポイントを巨大なファイル共有として扱い、ファイルストリームを開いてそこにバイト配列を書き込むことができます。

于 2012-05-21T13:34:11.643 に答える