Passer un objet de fichier à l'API Web à partir de Javascript

J'essaie de télécharger un fichier de ma machine locale vers sharepoint via web api à partir de l'appel de Javscript web api. J'ai essayé de passer l'objet de fichier de javascript à l'api web, mais je continue à avoir des erreurs comme Erreur de type, ressource introuvable, etc. Est-ce que quelqu'un peut vous aider?

Code 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'); } }); } 

Code API Web:

 [HttpPost] // This is from System.Web.Http, and not from System.Web.Mvc public void UploadFileToDocmentLibrary(HttpPostedFile uploadFile) { //code to upload to sharepoint } 

Vous pouvez télécharger le fichier entier avec 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); } }