Javascript 隐藏文件上载浏览按钮的文本框

Javascript 隐藏文件上载浏览按钮的文本框,javascript,html,css,spring,file-upload,Javascript,Html,Css,Spring,File Upload,标题可能会使问题看起来更老,但还有一些问题 为了隐藏浏览按钮的文本框,我添加了以下代码 <html:form action="/validate" enctype="multipart/form-data"> <html:file property="file" id="selectedFile" style="display: none;" /> <input type="button" value="Browse..." onclick="do

标题可能会使问题看起来更老,但还有一些问题

为了隐藏浏览按钮的文本框,我添加了以下代码

 <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>

由于文件未在此处接收,因此显示FileNotFound异常如果我使用文本框的普通浏览按钮,代码运行正常。但要求是,文本框应该隐藏。而且这个按钮也不应该被css搞乱。有什么问题吗。

不要使用
显示:无
,使用
高度:0;宽度:0;不透明度:0

为什么? 使用
display:none
时,元素将从文档结构中完全删除,因此代码中不会检测到该元素

请注意,显示“无”不会创建不可见的框; 它根本不创建任何框。


不要使用js,它不会很好地工作。关闭onclick并在隐藏的文件输入和“不做任何事情”按钮周围加上标记。不要使用
显示:无
而是使用
可见性:隐藏
,这样您就可以访问文件名了。@dandavis我不明白您的意思。默认的浏览按钮和文本字段不显示。你是说将此按钮包装在
标签中
,让标签打开文件资源管理器?@suresponnukalai如果我使用
可见性:隐藏
,即使它是隐藏的,它是否仍会占用那么多空间?使用不透明度和大小隐藏文件上载。然后将带有for attrib的标签设置为文件上载的id。在标签中放置一个没有任何事件的按钮。现在,您可以单击“虚拟”按钮,它将打开“文件”对话框。@单击它,在样式修改后元素是否可见,或者在更改后元素是否不可见且仍然未被检测到?
 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);
    }