jwa*_*ell 2 jsf file-upload tomahawk
我正在使用Tomahawk inputFileUpload组件来允许用户将文件上传到服务器.我通过在上传文件后检查文件大小来实现"软"文件大小限制,如果文件太大则显示错误.但是我还想要一个更大的"硬"限制,一旦超过限制,上传会立即停止.例如,如果硬限制为500MB并且用户尝试上载2GB文件,则一旦上载500MB并且显示错误,上载将立即停止.
我曾希望使用MyFaces ExtensionsFilter并设置uploadMaxFileSize可以解决问题,但是在抛出SizeLimitExceededException之前,文件已完全上传.
是否有可能做到这一点?理想情况下,我仍然可以使用战斧,但任何其他解决方案都会很好.
Web服务器无法中途中止HTTP请求,然后返回HTTP响应.必须完全使用整个HTTP请求,直到可以返回HTTP响应之前的最后一位.这就是HTTP和TCP/IP的本质.使用服务器端编程语言无法对付它.
请注意,只要达到大小限制,Tomahawk文件上载大小限制就会注意服务器的内存/磁盘空间不会被整个上载文件污染.
最好的办法是在上传之前用JavaScript验证文件长度.支持 HTML5 File
API的浏览器支持此功能.当前版本的Firefox,Chrome,Safari,Opera和Android都支持它.IE9还不支持它,它将在未来的IE10中使用.
<t:inputFileUpload ... onchange="checkFileSize(this)" />
Run Code Online (Sandbox Code Playgroud)
有这样的东西
function checkFileSize(inputFile) {
var max = 500 * 1024 * 1024; // 500MB
if (inputFile.files && inputFile.files[0].size > max) {
alert("File too large."); // Do your thing to handle the error.
inputFile.value = null; // Clears the field.
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6315 次 |
最近记录: |