"格式不正确的JSON流”;当从SharePoint 2013 REST API对文件使用moveto或cop
"Not well formed JSON stream" when using moveto or copyto on file from SharePoint 2013 REST API
我正在尝试对sharepoint 2013文档库中的文件启用文件移动和复制操作。我有列表和删除操作,但当我尝试调用/moveto(newfile=…,flags=1)或/copyto(strnewfile,boverwrite=true)时,我会收到一个错误"格式不正确的JSON流"。
我尝试过带有和不带有站点前缀的newurl(或strnewurl)(例如/sites/dev)。我已经单独验证了getfilebyserverrelativeurl实际上正在返回该文件。
以前有人碰到过这个吗?
function copyFile() {
var executor = new SP.RequestExecutor(appweburl);
executor.executeAsync({
url: appweburl + "/_api/SP.AppContextSite(@target)/web" +
"/getfilebyserverrelativeurl('/sites/dev/Sample1/Customer.dim')" +
"/copyto(strnewurl='/Sample1/filename.docx',boverwrite=false)" +
"?@target='" + hostweburl + "'",
method: "POST",
headers: {
"accept": "application/json;odata=verbose",
"IF-MATCH": "*"
},
success: function (data) {
alert(JSON.stringify(data));
},
error: errorHandler
});
}
function moveFile() {
var executor = new SP.RequestExecutor(appweburl);
executor.executeAsync({
url: appweburl + "/_api/SP.AppContextSite(@target)/web" +
"/getfilebyserverrelativeurl('/sites/dev/Sample1/Customer.dim')" +
"/moveto(newurl='/Sample1/filename.docx',flags=1)" +
"?@target='" + hostweburl + "'",
method: "POST",
headers: {
"accept": "application/json;odata=verbose",
"IF-MATCH": "*",
"X-RequestDigest": $("#__REQUESTDIGEST").val()
},
success: function (data) {
alert(JSON.stringify(data));
},
error: errorHandler
});
}
我刚刚遇到了同样的问题。我的解决方案是使用ajax而不是执行器:
$.ajax({
url: SPAppWebUrl + "/_api/SP.AppContextSite(@target)/web/getfilebyserverrelativeurl('" + file + "')/copyto(strnewurl='" + target + "',boverwrite=false)?@target='" + hostweburl + "'",
type: "POST",
dataType: 'json',
headers: {
"Accept": "application/json; odata=verbose",
"content-type": "application/json; odata=verbose",
"IF-MATCH": "*",
"X-RequestDigest": $('#__REQUESTDIGEST').val()
},
success: successHandler,
error: errorHandler
});
奇怪的是,当我在RequestExecutor中使用相同的方法时,它不起作用。
我发现copytoURL参数需要是相对于服务器的,而不是相对于站点的。所以strnewurl='/sites/dev/Sample1/filename.docx'
而不是strnewurl='/Sample1/filename.docx'
我知道所有的文档都说这是相对于站点的,但这对我来说是有效的。我也只包括accept头。
Sharepoint在线工作url/_api/web/getFileByServerRelativeUrl('/sites/test/Template.xlsx')/copyTo(strNewUrl='/sites/test/Exports/Template_copy_5.xlsx',bOverWrite=true)
相关文章:
- 找不到Intel XDK cordova文件api 1.3.3文件
- 如何在IE8中启用JavaScript文件API
- 文件API中的Javascript变量范围
- 我可以使用 HTML5 文件 API 预览 PDF 吗?
- 在NW.js应用程序中为HTML5文件API设置配额
- html5文件api,将用户选择的目录存储在sessionStorage中
- HTML5文件API使用Ajax上传多个图像
- Javascript;HTML文件API-基于文件对象的javascript对象是否仍然包含文件'的位置
- 文件选择/文件API-将文件发送到嵌入式PDFObject
- 使用 HTML 文件 API 和 JavaScript 搜索本地目录
- 如何使用 phonegap 文件 API 在该目录中创建目录和文件
- 使用 Phonegap 文件 API 获取所有文件名
- Cordova 的文件 API 中的元数据
- 如何从特权代码使用 Dom 文件 API
- 有没有办法将文件附加到已经存在的文件列表中?JavaScript 文件 API
- JavaScript 文件 API 具有多个输入
- 兴访问用户配置文件 API
- 使用 HTML5 文件 API 在浏览器中创建音频列表
- 如何从html 5文件API获取图像宽度
- 如何通过文件 API 从 json 文件执行数据