【发布时间】:2014-08-22 09:07:06
【问题描述】:
我正在使用 ajax 和 rest web 服务将文件上传到服务器。我已经捕获了文件上传事件并在我的 jquery 方法中获取了文件对象。我必须将文件对象发送到 Web 服务,以便我可以将文件保存到 db。 这是我的 jquery 代码..
$scope.selectFile = function (fileObj) {
if(fileObj!=undefined){
$.ajax({
url : "/RestServices/services/uploadFile",
type : "POST",
data : fileObj,
processData: false,
contentType: false,
success : function(result) {
$scope.$apply();
},
error : function(xhr, tStatus, err) {
// alert(err);
}
});
}
我也尝试过使用 FormData,但无法在 Web 服务中获取文件。
var formData = new FormData();
formData.append("fileToUpload", fileObj);
if(fileObj!=undefined){
$.ajax({
url : "/RestServices/services/uploadFile",
type : "POST",
data : formData,
processData: false,
contentType: false,
success : function(result) {
$scope.$apply();
},
error : function(xhr, tStatus, err) {
// alert(err);
}
});
这是我在服务中的 java 代码
@POST
@Path("/uploadFile")
@Consumes(MediaType.MULTIPART_FORM_DATA)
public void uploadFile(File formData) {
try {
System.out.println(formData.getFileName());
} catch (Exception e) {
LOGGER.error("Exception in Upload File Endpoint"+ e.getMessage());
}
}
如果我不使用 formData 直接发送文件对象,我会收到“不支持媒体类型错误”,如果我将 formData 发送到服务,我只会收到临时文件。 ajax 和服务方法中应该有什么数据类型?如何在服务中获取上传的文件?任何帮助将不胜感激。
【问题讨论】:
标签: jquery ajax web-services rest