将文件对象从Javascript传递到Web API
Passing file object to Web API from Javascript
我正试图通过Javscript web api调用的web api将文件从本地机器上传到sharepoint。试图将文件对象从javascript传递到web api,但我一直收到错误,如类型错误、找不到资源等。有人能帮我吗。
Javascript代码:
$scope.Upload = function () {
if (!window.FileReader) {
alert("This browser does not support the HTML5 File APIs");
return;
}
var element = document.getElementById("uploadInput");
var file = element.files[0];
//var folderStructure = "/PublishingImages/Lists/Featured%20Stories/";
var parts = element.value.split("''");
var fileName = parts[parts.length - 1];
filename1 = fileName;
var descriptionName = fileName;
var reader = new FileReader();
var indentifier = '';
//url = encodeURI(url);
reader.onload = function (e) {
UploadDocs(e.target.result, fileName);
}
reader.onerror = function (e) {
alert(e.target.error);
}
reader.readAsArrayBuffer(file);
}
function UploadDocs(str, file) {
var url = webApiUrl + "api/Registration/UploadFileToDocmentLibrary";
$.ajax({
type: "POST",
url: url,
contentType: 'application/json; charset=utf-8',
data: JSON.stringify(str),
dataType: 'json',
async: false,
success: function (response) {
console.log(response.fileData);
console.log('Success');
},
error: function (data) {
console.log('fail');
}
});
}
Web API代码:
[HttpPost] // This is from System.Web.Http, and not from System.Web.Mvc
public void UploadFileToDocmentLibrary(HttpPostedFile uploadFile)
{
//code to upload to sharepoint
}
您可以使用FormData
上传整个文件
JS:
$scope.uploadDocs = function () {
var element = document.getElementById("uploadInput");
var file = element.files[0];
var loFormData = new FormData();
loFormData.append("filename", file.name);
loFormData.append("file", file);
var loAjaxRequest = $.ajax({
cache: false,
type: 'POST',
url: webApiUrl + "api/Registration/UploadFileToDocmentLibrary",
contentType: false,
processData: false,
data: loFormData
});
loAjaxRequest.done(function (xhr, textStatus) {
alert(textStatus);
});
};
Web Api:
[HttpPost]
public async Task<HttpResponseMessage> UploadFileToDocmentLibrary()
{
if (!this.Request.Content.IsMimeMultipartContent())
throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
try
{
var loProvider = new MultipartFormDataStreamProvider(Path.GetTempPath());
await Request.Content.ReadAsMultipartAsync(loProvider);
string lsFilename = loProvider.FormData.GetValues("filename").First();
var loFile = loProvider.FileData.First();
string lsFileContent = File.ReadAllText(loFile.LocalFileName);
return new HttpResponseMessage(HttpStatusCode.OK);
}
catch (Exception exp)
{
return this.Request.CreateErrorResponse(HttpStatusCode.InternalServerError, exp);
}
}
相关文章:
- Steam Web API:I'我不知道该如何处理这个看起来像哈希的url来生成图像
- 如何在visualstudio中调试web api时编辑javascript文件
- 将复杂对象从angular js传递到web api,它总是返回404
- 将文档上载到Web API
- 对/Token的ASP Web API调用间歇性
- 从其他域和计算机发布的 Web API 帖子
- Web API 调用在设备模式下失败
- Testing .NET Web API from JavaScript
- 将日期作为从 Web API 到 angularJS 的 json 响应
- 获取 Spotify 用户 [Web API] 当前播放的曲目名称
- 在我的 Web API 中无法获取我的自定义标头
- Json 参数强制转换继承 Web API 2.
- 使用来自AngularJS的Web API JSON响应-错误:应为和数组,但得到了一个对象
- Javascript in Visual studio Web Api
- 获取AJAX中未定义的值(x),web api
- Web API在JSON调用上返回XML
- 将JSON字符串发布到WEB API
- 如何通过AngularJS$http从ASP.Net Web API 2获取访问令牌
- 使用ASP.Net MVC Web Api将JSON数据导出到Excel工作表
- 从mvc web api httpresponse生成csv,并通过angularjs接收下载