【发布时间】:2017-11-07 13:01:23
【问题描述】:
我构建了我的第一个 post api,它传递了一个字符串参数。 字符串参数包含一些配置文本,应将其上传到样式库的子文件夹中。
要上传文件,我使用 FileCreationInformation,效果很好。 但是我不能使用字符串参数,因为我会得到如下异常:
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
这是控制器代码:
[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 调用 http 请求如下:
$http.post($scope.config.HTTP_SERVICE + $scope.config.POST_CONFIG_CHANGE, JSON.stringify(text)).then(function successCallback(response) {
console.log('Erfolgreich!');
});
文字是这样的:
"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});"
我想使用字符串 config 作为我的内容,将它作为 xxx.js 上传到我的共享点。 如果不在本地硬盘上存储文件,这怎么可能?
【问题讨论】:
标签: c# angularjs sharepoint