有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

使用resteasy将javascript文件转换为java字节[]

我试图将一个文件从angularJS前端上传到jboss后台,但当调用服务时,我得到了这个例外:

Caused by: com.fasterxml.jackson.databind.JsonMappingException: Can not deserialize instance of byte[] out of START_OBJECT token
 at [Source: io.undertow.servlet.spec.ServletInputStreamImpl@1cc8ac9f; line: 1, column: 39] (through reference chain: fr.test.Document["datas"

】)

我想当我将javascript文件转换为java字节[]时,可能有问题,但我真的不知道是什么

我通过常规输入type=“file”收集文件:

<input
type="file"
style="display: none;"
onchange="angular.element(this).controller().addDocument(this)"
>

然后我用控制器中的onchange方法捕捉结果: (我在这个链接Return the Array of Bytes from FileReader()上读到,我必须使用一个承诺,即返回字节数组)

...
ctrl.addDocument = function(element){
    var file = element.files[0];

    var fileData = new Blob([element.files[0]]);
    var promise = new Promise(
            function(resolve){
                var reader = new FileReader();
                reader.readAsArrayBuffer(fileData);
                reader.onload = function() {
                  var arrayBuffer = reader.result
                  var bytes = new Uint8Array(arrayBuffer);
                  resolve(bytes);
                }
            }
    );
    promise.then(function(data) {
        var document = {
                name: file.name,
                type: file.type,
                datas: data
            };
        console.dir(document);
        ctrl.doc = document;
    }).catch(function(err) {
        console.log(err);
         growl.error('Unable to upload file');
    });
}
...

最后,使用rest服务调用backoffice。以下是我的后台服务声明:

@POST
@Path("/uploadFile")
@Consumes(MediaType.APPLICATION_JSON)
public void uploadFile(Document document) {
    LOGGER.info("upload document !");
}

以及包含相同属性的文档对象:

public class Document {

    private byte[] datas;
    private String name;
    private String type;

    public byte[] getDatas() {
        return datas;
    }
    public void setDatas(byte[] datas) {
        this.datas = datas;
    }
    ...

如果我对“ctrl.doc=document在我的控制器(字节部分)中,服务正常工作

我错过了什么?我真的能用这种方式发送文件吗


共 (0) 个答案