将文档上传到Web API

用户名

第一步:在我的MVC项目中,我有一个Div,可以上传文件。

<div id="modalUpload" style="display:none">
    Select a file:
    <input id="upload" type="file" name="upload" /><br />
    Description:
    <input id="documentDescription" type="text" /><br />
    <input type="button" value="Submit" id="submitUpload" data-bind="click:function(){ $root.upload() }">
 </div>

第二步:在JavaScript中,我使用POST请求将文档上传到Web API :(例如,使用XMLHttpRequest方法)

self.upload = function () {
        var file = document.getElementById("upload").files[0];
        var xhr = new XMLHttpRequest();
        xhr.open('post', "/API/document/addDocument/", true);
        xhr.send(file);
}

第三步:这是我在Web API上的addDocument函数,它需要一个Document对象,如下所示:

    [HttpPost]
    [Route("{controller}/addDocument")]
    public string Post([FromBody]Document doc)
    {
       .......
    }

我的问题是,如何将文档作为文档对象发布到API?是否可以设置POST数据的类型?

在我的JavaScript代码上,我有一个Document对象:

 var Document = function (data) {
      this.id = ko.observable(data.id);
      this.name= ko.observable(data.name);
      this.size= ko.observable(data.zise);
}

但是我不确定如何在它们之间建立连接。

当我尝试这个:

var file = new Document(document.getElementById("upload").files[0]);

我收到以下错误:

415(不受支持的媒体类型)

任何帮助将不胜感激。

用户名

最后,我没有将文档作为对象发送,这就是我最终要做的,

self.upload = function () {
    if (document.getElementById("upload").value != "") {
        var file = document.getElementById("upload").files[0];
        var filePath = "....";
        if (window.FormData !== undefined) {
            var data = new FormData();
            data.append("file", file);
            var encodedString = Base64.encode(filePath);

            $.ajax({
                type: "POST",
                url: "/API/document/upload/" + file.name + "/" + encodedString ,
                contentType: false,
                processData: false,
                data: data,
                success: function (result) {
                    console.log(result);
                },
                error: function (xhr, status, p3, p4) {
                    var err = "Error " + " " + status + " " + p3 + " " + p4;
                    if (xhr.responseText && xhr.responseText[0] == "{")
                        err = JSON.parse(xhr.responseText).Message;
                    console.log(err);
                }
            });
        }
    }
}

这是我的API函数:

[HttpPost]
    [Route("{controller}/upload/{fileName}/{filePath}")]
    public async Task<HttpResponseMessage> UploadFile(string fileName, string filePath)
    {

        if (!Request.Content.IsMimeMultipartContent())
        {
            return Request.CreateErrorResponse(HttpStatusCode.UnsupportedMediaType, "The request doesn't contain valid content!");
        }
        byte[] data = Convert.FromBase64String(filePath);
        filePath = Encoding.UTF8.GetString(data);
        try
        {
            var provider = new MultipartMemoryStreamProvider();
            await Request.Content.ReadAsMultipartAsync(provider);
            foreach (var file in provider.Contents)
            {
                var dataStream = await file.ReadAsStreamAsync();
                // use the data stream to persist the data to the server (file system etc)
                using (var fileStream = File.Create(filePath + fileName))
                {
                    dataStream.Seek(0, SeekOrigin.Begin);
                    dataStream.CopyTo(fileStream);
                }
                var response = Request.CreateResponse(HttpStatusCode.OK);
                response.Content = new StringContent("Successful upload", Encoding.UTF8, "text/plain");
                response.Content.Headers.ContentType = new MediaTypeWithQualityHeaderValue(@"text/html");
                return response;
            }
            return Request.CreateResponse(HttpStatusCode.ExpectationFailed);
        }
        catch (Exception e)
        {
            return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, e.Message);
        }
    }

很好,我从这里得到了这个主意

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

通过Web API将文件上传到Azure文件存储

来自分类Dev

将图像从WP7上传到Web Api

来自分类Dev

通过Web API将文件上传到Azure文件存储

来自分类Dev

C# 将内存流对象上传到 Web API

来自分类Dev

无法通过 web-api 将文件上传到 slack

来自分类Dev

如何将参数同时上传和图像上传到One Web API?

来自分类Dev

Java将文件上传到api端点

来自分类Dev

将文件上传到Message Bird API

来自分类Dev

将图像从React上传到Laravel API

来自分类Dev

如何将文件上传到API

来自分类Dev

如何将文件从Angular上传到ASP.NET Core Web API

来自分类Dev

Android 将 gif 文件上传到 .net Web API 出现内部服务器错误

来自分类Dev

Python Google Drive API,将数据上传到内存中,而不是文件上传到磁盘上?

来自分类Dev

将“ multipart / form-data”上传到ASP.NET Web API操作,在无缓冲模式下不可读

来自分类Dev

将图像(base64字符串)作为文件流上传到Web API

来自分类Dev

Web Api上传到Azure存储-请求实体太大

来自分类Dev

使用Guzzle 6将文件上传到API端点

来自分类Dev

如何使用OneDrive REST API将文件上传到OneDrive?

来自分类Dev

如何通过ActiveResource / REST API将文件上传到Redmine?

来自分类Dev

通过翻新将图像顺序上传到REST API

来自分类Dev

通过API将文件上传到Google云端硬盘

来自分类Dev

使用R将CSV文件上传到REST API

来自分类Dev

使用REST API将图像上传到Twitter

来自分类Dev

使用Blobstore API将文件上传到Google云存储

来自分类Dev

Facebook graph API:将照片上传到页面相册

来自分类Dev

使用Postman Raw将文件上传到Box API

来自分类Dev

通过API将Cakephp 3图片上传到Cloudinary

来自分类Dev

使用Python API将图片上传到Facebook

来自分类Dev

使用REST API将文件上传到Firebase存储

Related 相关文章

  1. 1

    通过Web API将文件上传到Azure文件存储

  2. 2

    将图像从WP7上传到Web Api

  3. 3

    通过Web API将文件上传到Azure文件存储

  4. 4

    C# 将内存流对象上传到 Web API

  5. 5

    无法通过 web-api 将文件上传到 slack

  6. 6

    如何将参数同时上传和图像上传到One Web API?

  7. 7

    Java将文件上传到api端点

  8. 8

    将文件上传到Message Bird API

  9. 9

    将图像从React上传到Laravel API

  10. 10

    如何将文件上传到API

  11. 11

    如何将文件从Angular上传到ASP.NET Core Web API

  12. 12

    Android 将 gif 文件上传到 .net Web API 出现内部服务器错误

  13. 13

    Python Google Drive API,将数据上传到内存中,而不是文件上传到磁盘上?

  14. 14

    将“ multipart / form-data”上传到ASP.NET Web API操作,在无缓冲模式下不可读

  15. 15

    将图像(base64字符串)作为文件流上传到Web API

  16. 16

    Web Api上传到Azure存储-请求实体太大

  17. 17

    使用Guzzle 6将文件上传到API端点

  18. 18

    如何使用OneDrive REST API将文件上传到OneDrive?

  19. 19

    如何通过ActiveResource / REST API将文件上传到Redmine?

  20. 20

    通过翻新将图像顺序上传到REST API

  21. 21

    通过API将文件上传到Google云端硬盘

  22. 22

    使用R将CSV文件上传到REST API

  23. 23

    使用REST API将图像上传到Twitter

  24. 24

    使用Blobstore API将文件上传到Google云存储

  25. 25

    Facebook graph API:将照片上传到页面相册

  26. 26

    使用Postman Raw将文件上传到Box API

  27. 27

    通过API将Cakephp 3图片上传到Cloudinary

  28. 28

    使用Python API将图片上传到Facebook

  29. 29

    使用REST API将文件上传到Firebase存储

热门标签

归档