2017-11-07 12 views
0

文字列パラメータを渡す最初のポストAPIを作成しました。 文字列paramにはいくつかの設定テキストがあり、スタイルライブラリのサブフォルダにアップロードする必要があります。SharePoint WebサービスFileCreationInformationコンテンツ文字列パラメータ

ファイルをアップロードするには、私はFileCreationInformationを使用します。これは素晴らしい動作です。次のように私は例外が発生しますので、 しかし、私は、文字列パラメータを使用することはできません。

 [HttpPost] 
    [Impersonation] 
    [Route("default")] 
    public void PostDefaultConfig ([FromBody]string config) 
    { 
     utility.SetDefaultConfig(config); 
    } 

メソッドのコード:

   public DefaultConfig SetDefaultConfig(string config) 
    { 
     if (string.IsNullOrEmpty(config)) 
     { 
      throw new ArgumentException("Config is invalid", nameof(config)); 
     } 

     string myFile = @"D:\DATALOSS_WARNING_README.txt"; 
     string LibraryName = "Style Library"; 
     string siteUrl = "http://xxx/sites/dashboard-nick"; 
     using (ClientContext ctx = new ClientContext(siteUrl)) 
     { 
      FileCreationInformation fcInfo = new FileCreationInformation 
      { 
       Url = Path.Combine("Style Library/SWITCOM.Dashboard/config/", Path.GetFileName(myFile)), 
       Overwrite = true, 
       Content = System.IO.File.ReadAllBytes(config) 
      }; 

      Web myWeb = ctx.Web; 
      List myLibrary = myWeb.Lists.GetByTitle(LibraryName); 
      myLibrary.RootFolder.Files.Add(fcInfo); 
      ctx.ExecuteQuery(); 
     }; 
     var test = new DefaultConfig 
     { 
      Response = "..." 
     }; 
     return test; 

    } 

AngularJSコールここで

angular.js:14642 Possibly unhandled rejection: {"data":{"Message":"An error has occurred.","ExceptionMessage":"Illegal characters in path.","ExceptionType":"System.ArgumentException","StackTrace":" at System.IO.Path.CheckInvalidPathChars(String path, Boolean checkAdditional)\r\n 

は、コントローラのコードですhttpリクエストは次のようになります。

  $http.post($scope.config.HTTP_SERVICE + $scope.config.POST_CONFIG_CHANGE, JSON.stringify(text)).then(function successCallback(response) { 
      console.log('Erfolgreich!'); 
     }); 
01私はxxx.js.として私のSharePointにアップロードするために私のコンテンツとして、文字列の設定を使用したい

"var config_data = angular.module('config', []).constant('CONFIG', {\n'PATH_STYLE_LIBRARY' : 'http://xxx/sites/dashboard',\n'PATH_MY_SITE' : 'http://xxx/my',\n'LANG' : 'ENU',\n'SEARCH_URL' : '../../search/Pages/siteresults.aspx',\n'TASKS_URL_ENU' : '/Pages/Tasks.aspx',\n'TASKS_URL_DEU' : '/Seiten/Tasks.aspx',\n'DEFAULT_SITE_IMG' : '../Style%20Library/SWITCOM.Dashboard/images/sharepoint.png',\n'ITEMS_PER_PAGE' : '15',\n'TASKS_LIST_URL_ENU' : '/Lists/Tasks',\n'TASKS_LIST_URL_DEU' : '/Lists/Aufgaben',\n'DOCUMENTS_URL_ENU' : '/Shared Documents',\n'DOCUMENTS_URL_DEU' : '/Freigegebene Dokumente',\n'CALENDAR_URL_ENU' : '/Lists/Calendar',\n'CALENDAR_URL_DEU' : '/Lists/Kalender',\n'CONTACTS_URL' : '/Lists/Contacts',\n'IMAGES_URL' : '/PublishingImages',\n'LINKS_URL' : '/Lists/Links',\n'RECYCLE_BIN_URL' : '/_layouts/15/RecycleBin.aspx',\n'HTTP_SERVICE' : 'http://xxx',\n'GET_BUSINESSAREA' : '/api/businessarea',\n'GET_SITES' : '/api/site',\n'POST_SITES' : '/api/siterequest',\n'GET_STORAGE' : '/api/site/storage',\n'GET_MEMBERS' : '/api/site/members',\n'GET_FOLDERS' : '/api/site/folders',\n'POST_CONFIG_CHANGE' : '/api/site/default',\n'NO_SENDING' : '0',\n'IS_SENDING' : '1',\n'SUC_SENDING' : '2',\n'ERR_DATES_SENDING' : '3',\n'ERR_SERVICE_SENDING' : '4',\n'TEAM_SITE' : 'TEAM-SITE',\n'PROJECT_SITE' : 'PROJECT-SITE',\n'LCID' : '1031',\n'TIMEZONEID' : '4'\n});" 

とテキストは次のようです ファイルをローカルのハードディスクに保存しないとどうしたらできますか?

答えて

0

私はtry and errorで1つの解決策を得ました。

誰かが同じまたはほぼ同じ「問題」を持っている場合は、ここで私の解決策です。あなたはエンコーディングを追加し、その後のMemoryStream

(例えば)で結果を読む必要があり

string configText = (string)config["Text"]; 
byte[] byteArray = System.Text.Encoding.ASCII.GetBytes(configText); 
MemoryStream stream = new System.IO.MemoryStream(byteArray); 
関連する問題