代码之家  ›  专栏  ›  技术社区  ›  Conner

在Swift中发布文件

  •  0
  • Conner  · 技术社区  · 6 年前

    我正在尝试从Swift向web API发布文件。我发送的请求接收良好,但其中没有任何文件。我能够在C#控制器的请求下偷看 HttpContext.Current.Request.Files.Count 为0。我怀疑它不是将文件附加到请求主体,而是将文件内容作为原始数据放入。

    代码创建请求:

    func upload(_ fileName:URL)
    {
        let requestUrl:URL = URL(string: uploadURL)!
        let request = NSMutableURLRequest(url: requestUrl)
        request.httpMethod = "POST"
        request.httpBodyStream = InputStream(url: fileName)
    
        let (data, response, error) = URLSession.shared.synchronousDataTaskWithRequest(request as URLRequest)
    }
    

    我做错了什么?

    如果有助于理解我试图构建的请求类型,那么这就是JS中的工作代码,它可以从HTML创建FormData对象 <input type='file'> 要素:

    $.ajax({
        url: $('#apiURL').val() + 'Upload'
        type: 'POST',
        contentType: false,
        processData: false,
        data: new FormData($('form')[0]),
        success: function (data)
        {
            // doing successful things
        },
        error: function (jqXHR, textStatus, errorThrown)
        {
            alert("Failed");
        }
    });
    

    我基本上只想发送一个文件到它引用的同一个控制器,但在swift中。。。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Conner    6 年前

    我的google fu没有达到标准。复制粘贴给出的答案,并对代码进行细微更改,以使用我已经使用过的数据类型: https://stackoverflow.com/a/26163136/6825722