gpt4 book ai didi

java - 在 Java 文件中处理从 Ajax 发送的 FormData

转载 作者:太空宇宙 更新时间:2023-11-04 16:22:31 24 4
gpt4 key购买 nike

我像这样通过 Ajax 发送文件:

// Get the selected files from the input.
var files = fileSelect.files;

// Create a new FormData object.
var formData = new FormData();

// Add the file to the request.
formData.append('photos[]', files[0], files[0].name);


$.ajax({
type:"POST",
url:"URL,
dataType:"json",
headers : {"cache-control":"no-cache"},
timeout : 12000,
processData: false,
data:{
formdata:formData
}

现在我想在我的 java 类中使用发送文件,在这样的资源中:

@PermitAll
@POST
@Path(URL)
@Produces(MediaType.APPLICATION_JSON)
public Map<String, Object> fileHandler(@FormParam("formdata") File formdata){ }

但是访问文件不起作用,@FormParam("formdata") File formdata 似乎是错误的(或者更多的东西?)。我想以某种方式在我的资源类中访问这个文件。我究竟做错了什么?也许有人知道更好的解决方案。

最佳答案

你可以这样处理:

我改变了 FormData 的传递方式。使用表单的 id 并将其传递以创建表单数据:

Java脚本:

$.ajax({
type : 'POST',
url : rquestURL,
cache:false,
processData:false,
contentType:false,
data : new FormData($("#"+<your_form_id>)[0])}

Rresource(添加了 @Consumes(MediaType.MULTIPART_FORM_DATA) 注释):

@Path("/upload")
@POST
@Consumes(MediaType.MULTIPART_FORM_DATA)
public ResponseDTO doUpload(FormDataMultiPart multiPartData) {

// non-file fields
final String imageId = multiPartData.getField("<your_field_name>").getValue();

// for file field
final FormDataBodyPart filePart = multiPartData.getField("<file_field_name>");
final ContentDisposition fileDetails = filePart.getContentDisposition();
final InputStream fileInputStream = filePart.getValueAs(InputStream.class);

// use the above fields as required
// file name can be accessed from field "fileDetails"
}

关于java - 在 Java 文件中处理从 Ajax 发送的 FormData,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28166961/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com