标题可能会使问题看起来更旧,但还有更多问题。
为了隐藏浏览按钮的文本框,我添加了以下代码。
<html:form action="/validate" enctype="multipart/form-data">
<html:file property="file" id="selectedFile" style="display: none;" />
<input type="button" value="Browse..." onclick="document.getElementById('selectedFile').click();" />
<html:sumbit/>
</html:form>
在选择文件之前一切正常。我正在为我的项目使用spring。
当我使用这种方法时,我无法将文件传递给类方法。我需要隐藏文本框。以下是我在课堂上使用的代码。
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
FileUploadForm uploadForm = (FileUploadForm) form;
FileOutputStream outputStream = null;
FormFile formFile = null;
try {
formFile = uploadForm.getFile();
String path = getServlet().getServletContext().getRealPath("") + "/" + formFile.getFileName();
outputStream = new FileOutputStream(new File(path));
outputStream.write(formFile.getFileData());
} finally {
if (outputStream != null) {
outputStream.close();
}
}
uploadForm.setMessage("The file " + formFile.getFileName() + " is uploaded successfully.");
return mapping.findForward(SUCCESS);
}
由于文件未在此处获取,因此显示FileNotFound异常。 代码运行良好如果我使用带文本框的普通浏览按钮。但要求就是,应该隐藏文本框。按钮也不应该与css混淆。有什么想法会出错。
答案 0 :(得分:0)
请勿使用display:none
,请使用height:0;width:0;opacity:0;
当您使用display:none
时,元素将从文档结构中完全删除,因此代码中感知
请注意,'none'的显示不会创建一个隐形框; 它根本不会创造任何盒子。 http://www.w3.org/TR/CSS2/visuren.html#propdef-display