Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.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
Angularjs 在同一请求中发送多种类型的内容_Angularjs_Multipart_Angular Http_Request Headers - Fatal编程技术网

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

Angularjs 在同一请求中发送多种类型的内容,angularjs,multipart,angular-http,request-headers,Angularjs,Multipart,Angular Http,Request Headers,我正在使用angular 1.5,我必须点击一个服务来上传文件。在同一个服务中,我还必须将JSON作为请求体传递 当我使用Content-type:application/json multipart for file不起作用时,如果我使用Content-type:undefined,则multipart将起作用,但json-param不起作用。那么,有没有什么方法可以将json的键值对的值设置为多部分?或者有其他的方法吗 谢谢这样试一下,你会很好的: $scope.uploadMultipar

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

当我使用Content-type:application/json multipart for file不起作用时,如果我使用Content-type:undefined,则multipart将起作用,但json-param不起作用。那么,有没有什么方法可以将json的键值对的值设置为多部分?或者有其他的方法吗


谢谢

这样试一下,你会很好的:

$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对象的一部分。这样,您就可以在内容类型application/json中发布一个


对在这里,我们将向multipart追加一个字符串化的json。有相反的路吗?JSON中的多部分?@AmirSuhail为什么要这样做?使用这种多部分结构,即使后端处理JSON.parse也要容易得多-是的。但是后端必须在获得多部分时调用某个服务。如果我们执行上述操作,数据将以多部分参数的形式出现,而不是以请求体的形式出现。要获取请求正文中的数据,我需要这样做。对不起,我不理解新文件[new Blob[s]],文件Blob数组中的s是什么?它应该是新的Blob[json.stringfyfile]],对吗?@AmirSuhail我让它与FileReader一起工作。检查更新
$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
        });
    }
};