Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Javascript向Web API传递文件对象_Javascript_C#_File_Sharepoint_Asp.net Web Api - Fatal编程技术网

从Javascript向Web API传递文件对象

从Javascript向Web API传递文件对象,javascript,c#,file,sharepoint,asp.net-web-api,Javascript,C#,File,Sharepoint,Asp.net Web Api,我正在尝试通过Javscript web api调用的web api将文件从本地计算机上载到sharepoint。试图将文件对象从javascript传递到web api,但我不断收到错误,如类型错误、未找到资源等。有人能帮我吗 Javascript代码: $scope.Upload = function () { if (!window.FileReader) { alert("This browser does not support the HTM

我正在尝试通过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:

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);
    }
}
[HttpPost]
公共异步任务上载FileToDocmentLibrary()
{
如果(!this.Request.Content.IsMimeMultipartContent())
抛出新的HttpResponseException(HttpStatusCode.UnsupportedMediaType);
尝试
{
var loProvider=新的MultipartFormDataStreamProvider(Path.GetTempPath());
wait Request.Content.ReadAsMultipartAsync(loProvider);
字符串lsFilename=loProvider.FormData.GetValues(“文件名”).First();
var loFile=loProvider.FileData.First();
字符串lsFileContent=File.ReadAllText(loFile.LocalFileName);
返回新的HttpResponseMessage(HttpStatusCode.OK);
}
捕获(异常扩展)
{
返回此.Request.CreateErrorResponse(HttpStatusCode.InternalServerError,exp);
}
}
[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);
    }
}