我想通过struts表单上传图像文件和一些数据,处理数据,并将该图像存储在DB中
我为它创建了一个表单,定义了在struts.xml文件中上传文件的操作,但是当控件进入java方法时,在File类型变量中得到null,请帮忙。
struts.xml中的代码:
<action name="uploadFile" class="org.ui.LogActivityAction"
method="uploadFile">
<interceptor-ref name="fileUpload">
<param name="fileUpload.maximumSize">10485760</param>
<param name="fileUpload.allowedTypes">text/plain,image/jpg</param>
</interceptor-ref>
<interceptor-ref name="defaultStack"/>
<result name="success">/user/activity/upload-card.jsp</result>
<result name="error">/user/activity/upload-card.jsp</result>
</action>
用于将数据发送到行动的ajax:
function saveSalesUserActivity(card) {
var isValidForm = jQuery('#dailyActivity').valid();
isValidForm = jQuery('#dailyActivity').valid();
if (!isValidForm) {
return;
}
if (isValidForm) {
jQuery.blockUI({
message: "<strong>" + messages("mis.common.wait") + "</strong>"
});
jQuery.ajax({
type: "POST",
url: "/sales/user/logactivity/saveactivity.action?businessCard=" + card,
data: jQuery('#dailyActivity').serialize(),
success: function(response) {
jQuery("#miscontent").html(response);
},
error: function(response) {
jQuery("#miscontent").html(response);
}
});
jQuery.unblockUI();
}
jQuery.unblockUI();
}
通过这个到达java方法时,我没有得到文件类型变量的值(使用&#39; businessCard&#39;这里).. 任何人帮助..
答案 0 :(得分:1)
如果你使用jQuery('#dailyActivity').serialize()
,
它不适用于<input type'file'>
看看这个jsFiddle 不起作用
和这一个.serialize()
来自文件选择元素的数据未被序列化。
要发送<input type'file'>
,您可能需要尝试
var formData = new FormData($('form')[0]);
答案 1 :(得分:0)
要使用jQuery上传文件,您必须使用formdata
文件上传的工作代码在
下面
$(document).on('click', '#upload', function(e) {
e.preventDefault();
var fd = new FormData();
var file = $('#my_file')[0].files[0];
fd.append('file', file);
fd.append('userId', $('#userid').val());
console.log("hi");
$.ajax({
url: 'UploadPic',
data: fd,
type: "POST",
contentType: false,
processData: false,
success: function(dd) {
alert("sucessfully Uploaded")
}
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="file" id="my_file">
<input type="hidden" id="userid" />
<input type="button" id="upload" value="Upload" />