在同一请求中发送多种类型的内容

Sending multiple type of content in same request

我正在使用 angular 1.5,我必须点击服务才能上传文件。在同一服务中,我也必须传递一个 JSON 作为请求正文。

当我对文件使用 Content-type: application/json multipart 时不起作用,如果我使用 Content-type: undefined 则 multipart 将起作用,但 JSON 参数将不起作用。那么有什么方法可以将 key-value 对 json 中的 value 设置为 multipart 吗?或者有其他方法吗?

谢谢

这样试试就可以了:

$scope.uploadMultipart = function(file, jsonObject, uploadUrl){
    var formData = new FormData();

    formData.append('json',JSON.stringify(jsonObject));
    formData.append('file', file);

    return $http({
        url: uploadUrl,
        method: 'POST',
        data: formData,
        headers: { 'Content-Type': undefined},
        transformRequest: angular.identity
    });
};

我不推荐它,但您可以通过这种方式将文件添加为 JSON 对象的一部分。这样你就可以 post 在 content-type application/json 中。

$scope.uploadHack = function(file, jsonObject, uploadUrl){

    var aReader = new FileReader();
    aReader.readAsText(file, "UTF-8");
    aReader.onload = function (evt) {

        //append file to json as raw data
        jsonObject.file = {
            content:  aReader.result,
            name: file.name,
            size: file.size
        };

        $http({
            url: uploadUrl,
            method: 'POST',
            data: jsonObject,
            headers: { 'Content-Type': 'application/json'},
            transformRequest: angular.identity
        });
    }
};