- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的 JSF View 使用普通 <h:inputFile>
上传文件.一旦选择文件(onchange
事件),它就有一个 AJAX Action 开始上传。我想对文件做一些基本的验证,使用 HTML5 DOM File API和 Javascript,在客户端在某些情况下停止上传。
(是的,我知道可以绕过带有此检查的 Javascript,这只是对不小心选择了错误文件的普通用户的“带宽和时间节省检查”——仍然会有服务器端验证。而且我还了解文件 API 可能尚未在所有(较旧的)浏览器上可用。)
简化的 JSF 文件:
<html
xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
>
<h:head>
<h:outputScript target="body">
//<![CDATA[
function doUpload(data, event) {
if ("event" == data.type) {
switch (data.status) {
case "begin":
// validate file size
if (data.source.files[0].size > 20971520) { //20MiB
alert('ERROR: File too big!');
event.preventDefault();
return false;
}
// TODO show throbber
break;
case "complete":
// TODO hide throbber
break;
case "success":
break;
}
}
}
//]]>
</h:outputScript>
</h:head>
<h:body>
<h:form id="testuploadform" enctype="multipart/form-data">
<h:inputFile id="uploadFile" name="uploadFile" value="#{testBean.uploadFile}">
<!-- TODO validator/s for server-side validation -->
<f:ajax event="change" listener="#{testBean.ajaxLst_autoUpload}"
onevent="function(data){ doUpload(data,event); }"
/>
</h:inputFile>
</h:form>
</h:body>
</html>
似乎尽管使用了 event.preventDefault()
调用,事件仍在进一步处理:文件已上传,我的监听器函数 TestBean.ajaxLst_autoUpload()
能够获得它并对其进行处理。
我正在尝试做的事情是否可行?我该怎么做?
====
我想另一种方法是 use the XMLHttpRequest.open() process to issue a request from AJAX (只有一次验证成功),但是我不确定如何做一个“有效的” POST
请求到 JSF - 我只看到了 PHP 和 Java Servlet 的示例。我主要不热衷于编写上传 Servlet(尽管如果需要可以完成,并且可以通过 google 搜索示例),而且我不太了解幕后的 JSF,不知道它如何与 Servlet 对应。但在这方面的任何指示也将不胜感激。
最佳答案
在 <f:ajax onevent>
中处理为时已晚。使用输入组件的 onchange
属性代替。基本上:
<h:inputFile ... onchange="return validate(this)">
关于javascript - <h :inputFile> 上的客户端验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37566708/
有没有办法只获取浏览文件的内容而不进行任何上传/文件传输操作?我目前使用 ICEFaces inputFile 组件,但不需要文件的默认上传操作。谢谢。 最佳答案 这是不可能的。每当服务器端想要获取文
我的 JSF View 使用普通 上传文件.一旦选择文件(onchange 事件),它就有一个 AJAX Action 开始上传。我想对文件做一些基本的验证,使用 HTML5 DOM File AP
我在 dotnet 5 上有一个 Blazor Web Assembly 应用程序。我已将 Microsoft.AspNetCore.Components.Forms.InputFile 控件添加到组
我正在使用 Xcode 6.2 (6C131e) 构建我的 cocoa 项目。它工作得非常顺利,但今天我遇到了以下错误: 2015-06-01 11:53:59.911 xcodebuild[2060
我有一个名为 myfile 的 HTML5 输入文件。在同一个文件中,我在一段 JavaScript 中使用了 $("#myfile").click();。 $("#myfile").click();
我在 jdeveloper 中使用 adf。我有一个 af:inputfile,它使用 valuechangelistener 检查文件类型,然后上传到服务器。 我需要在这些过程发生时显示弹出窗口(带
我正在使用 inputFile 按钮上传一些文件... 该按钮在我的页面上呈现为灰色的“选择要上传的文件”按钮。我可以添加自己的自定义图标/图像来代替按钮吗? 最佳答案 是的,你可以做到。虽然,这不是
我有一个使用 Blazor InputFile 组件作为子组件的组件。 当我选择一个文件时,按预期调用 OnChange 处理程序。但是,如果我两次选择同一个文件,则不会再次调用 OnChange 处
我需要执行一个 powershell 脚本来执行 SQL 脚本来创建数据库。根据我的知识,我以这种方式执行 powershell 命令: Init.ps1 $DATABASEFILENAME = "C
请告诉我 InputFile.PostedFile.ContentLength 测量的单位。我需要确保文件小于 500k。 谢谢。 最佳答案 测量单位 = 字节。 1 Kilobyte (kB) =
我的 ADF 表单工作正常,除了一个奇怪的缓存问题。我有一个不使用数据库的 ADF 表单。它有一个输入文件字段,用户可以选择电子表格。当他们单击“处理文件”按钮时,它会读取电子表格,进行一些数据操作并
我正在使用 OmniFaces's 2.6.1 inputFile上传文件并希望通过使用 accept 属性应用媒体类型过滤,例如 accept="image/png"。这适用于具有 .png 扩展名
我想使用Process process = new ProcessBuilder("executable.exe", "InputFile").start()来运行executable.exe。运行该
我正在使用 Krajee Bootstrap FileInput。我正在使用 initialPreview 标签并遇到以下问题: 初始图像以原始图像大小而非缩略图大小显示 无法删除初始图像。 我使用了
This question already has answers here: Fileupload and PrettyFaces and JSF 2.2 [duplicate] (2个答案) 5年
我需要能够提取完整的文件名,包括用户使用我的 InputFile 元素选择文件时的路径。 因此,举个例子,使用这个 我可以像这样在事件处理程序中看到文件名 void FileSelected(Inp
我在 jsff 页面中使用 inputFile 组件,用户可以在其中浏览文件系统,选择文件以便将其存储在数据库中。 我为此组件创建了一个 ValueChangeListener 方法,用于处理该文件并
谁能告诉我如何在 Oracel ADF 中使用 af:inputFile 将文件上传到服务器。我对此进行了搜索,发现我们可以使用以下内容 使用上面的代码,我可以设置一个方法,当有人在表单中选
创建一个 UI InputField 组件,并将线型选择为 Singleline。 构建游戏并将其安装到 IOS 设备(例如 iPhone)。 将键盘设置为快速拨号类型和中文拼音输入。 打开游戏,输入
ifstream inputFile; inputFile.open(argv[1]); char* buffer[40]; inputFile >> buffer; 我也试过 输入文件 >> *缓冲
我是一名优秀的程序员,十分优秀!