当前位置: 首页 > 知识库问答 >
问题:

连接终止解析Angulrjs和JAX-RS中的多部分数据

百里金林
2023-03-14

我希望使用AngularJS向我的本地主机(在spring boot server中)发送来自用户的选定图像,并使用JAX-RS在BD中添加数据对象。

<form role="form" enctype="multipart/form-data" name="myForm" ng-submit="uploadfile()">
<label class="control-label">Image:</label> 
<input type="file" class="form-control " file-model="Image" > 
<input type="text" class="form-control " ng-model="name" > 
 <input type="text" class="form-control " ng-model="lastname" > 
<button type="submit"> save</button>
</form>
var app = angular.module('Mainapp', ['ngRoute','file-model','ui.bootstrap']);
app.directive('fileModel', ['$parse', function ($parse) {
    return {
       restrict: 'A',
       link: function(scope, element, attrs) {
          var model = $parse(attrs.fileModel);
          var modelSetter = model.assign;

          element.bind('change', function(){
             scope.$apply(function(){
                modelSetter(scope, element[0].files[0]);
             });
          });
       }
    };
 }]);

app.service('fileUpload', ['$http', function ($http) {
    this.uploadFileToUrl = function(file, uploadUrl){
        var fd = new FormData();
        //fd.append('file', file);
       angular.forEach(file, function(file) {
            fd.append('file', file);
        });

        $http.post(uploadUrl, fd, {
            transformRequest: angular.identity,
            headers: {'Content-Type': undefined}
        }).then(function(response) {
            console.log("done post "+response);
    }).catch(function(e) {
        console.log('failed to post: ', e);
        throw e;
    })

    }
}]);
//upload file and data object of user
$scope.uploadfile = function() {
        var file = $scope.Image;
         console.dir(file);
        var uploadUrl ="http://localhost:8000/auditconfig/images/"+file.name; 
        fileUpload.uploadFileToUrl(file, uploadUrl); // error here "failed to post"


var user = {
              name: $scope.name,
              lastname: $scope.lastname,
              image:file.name 
             };
$http.post(url+"/add", user) //The user is added to the database
.success(function(data) {
      $scope.ListUsers = data;
}).error(function(err, data) {
    console.log("error: " +data);
});
  };
//**console.dir(file);
*File:
lastModified:1490260924299
lastModifiedDate; Thu Mar 23 2017 10:22:04 GMT+0100 (Paris, Madrid)
name:"01.png"
size:1637
type:"image/png"
webkitRelativePath:""
__proto__:File

-上载文件的测试:

//**console.log('failed to post: ', e);
Failed to load resource: the server responded with a status of 500 (Internal Server Error) :8099/AuditConf/images/01.png
failed to post: Object
Config:Objectd
ata:FormData
__proto__:FormData 
headers:Object
Accept:"application/json, text/plain, */*"
Content-Type:undefined
__proto__:Object
method:"POST"
transformRequest:function identity($)
transformResponse:Array(1)
url:"http://localhost:8099/AuditConf/images/Exception--JAX-RS.png"
__proto__:Object
data:Object
error:"Internal Server Error"
exception:"java.lang.RuntimeException"
message:"java.io.IOException: UT000036: Connection terminated parsing multipart data"
path:"/auditconfig/images/Exception--JAX-RS.png"
status:500
timestamp:1490778930961
__proto__:Object
headers:function (name)
status:500 statusText
:"Internal Server Error"
__proto__;Object

共有1个答案

裘兴思
2023-03-14

试试看:

this.uploadFileToUrl = function(file, uploadUrl){
    var data = new FormData();
    data.append('file', file);

    //Comment below
    //angular.forEach(file, function(file) {
    //  fd.append('file', file);
    //});

    return $http.post(uploadUrl, data, {
        transformRequest: angular.identity,
        headers: { 'Content-Type': undefined }
      }).then(function (results) {
        return results;
    });
}

请参阅这里的答案,它在一个对象“file”中接受多个文件

 类似资料:
  • 我正在使用带有Content-Type: Application/dicom的WADO-RS。成功执行请求后,我得到了一个字节流,其中包含一些头信息和Multipart格式的DICOM数据。如何使用C代码从中解析实际的DICOM数据?

  • 我用以下注释注册了rest资源: 当我尝试启动服务器时,我得到以下错误: classCastException:无法将org.glassfish.jersey.ext.cdi1x.transaction.internal.transactionalExceptionInterceptorProvider转换为org.glassfish.jersey.server.spi.componentProv

  • 我有一个jax-rs REST服务,使用JEE 7(部署在glassfish中),它有一种在资源上处理HTTP POST的方法: 我尝试将多部分数据提取为: 然后,我尝试使用 RestClient(来自 wiztools.org)模拟客户端多部分 POST 请求,其中至少有 2 个部分具有不同的内容类型(边界分隔符由 RESTClient 工具自动设置)。 我在wireshark中验证它是否是从R

  • 我有一个服务器Weblogic 12.1.3,带有JAX-RS 2。x作为共享库安装(参见。https://docs.oracle.com/middleware/1213/wls/RESTF/use-jersey20-ri.htm#RESTF297). 该共享库包括例如javax。ws。rs-api-2.0。jar和jersey-media-multipart-2.5.1。jar。 请注意,我不确

  • 问题内容: 这是我到目前为止所拥有的: 这将初始化我的REST服务 我的服务如下所示: 我尝试将添加到中,但仍然出现异常: 在没有多部分配置的情况下调用Request.getParts。 在servlet中添加@MultipartConfig或在web.xml中添加multipart-config元素 。 谢谢 问题答案: 最终,我在没有Jersey耦合的情况下设法解决了这一问题。问题是注释不能与