Ajax虽然不错,但无法上传图片文件,可以用隐藏的 IFrame 提交表单部分替代Ajax。
直接上代码:
jsp中代码:
<script type="text/javascript">
function callback(msg)
{
if(msg=="00"){
alert("上传失败,请按模版格式重新上传!");
return;
}else if(msg!="null"){
window.returnValue='http://localhost:8888/wlgl/uploadFile/'+msg
window.close();
}
}
</script>
<h5>文件上传</h5><hr/>
<form id="file_upload_id" name="file_upload_name" action="../wlgl/fileUpload.do" method="post" enctype="multipart/form-data" target="hidden_frame">
<input type="hidden" name="functionId" value="${functionId}"/>
<input type="hidden" name="fileType" value="${fileType}"/>
<input type="hidden" name="maxSize" value="${maxSize}"/>
<div><input type="file" name="file_upload"/></div>
<c:if test="${functionId!=null}">
<div style="font: 12">文件类型${functionId}</div>
</c:if>
<c:if test="${maxSize!=null}">
<div style="font: 12">文件最大不能超过${maxSize}MB</div>
</c:if>
<c:if test="${fileType!=null}">
<div style="font: 12">文件格式必须是:${fileType}</div>
</c:if>
<div><input type="submit" value="上传"/></div>
<iframe name='hidden_frame' id="hidden_frame" style='display:none'></iframe>
</form>
Java servlet 代码:
当保存完图片路径之后,返回页面图片存在的路径
out.println( "<script>parent.callback('"+sb.append(uuid).append(".").append(fileEnd)+"')</script>");
成功结果: