我已将我的应用程序迁移到wicket 6.14,并在文件上载字段中尝试使用以下实现获取文件名和文件大小
@Override
public CharSequence getCallbackUrl() {
CharSequence callBackUrl = super.getCallbackUrl();
//File attribute of file input type is supported by certain browsers therefore conditionally returns the file size using js
return callBackUrl +
"&filename=' + this.value + '&filesize=' + (function(undefined) {if($(\"<input type='file'>\").get(0).files !== undefined){ return $('#fileInput')[0].files[0].size}else{return 0;}})() + '";//"&filename=' + this.value + '";//
}
但是当我尝试读取参数值时,它将返回文件名和jquery函数的值作为文件大小。
Request request = RequestCycle.get().getRequest();
String filename = findFileName(request.getRequestParameters().getParameterValue("filename").toString());
String fileSize = request.getRequestParameters().getParameterValue("filesize").toString();
我该怎么做?
答案 0 :(得分:0)
评估js以获取文件大小并在事后从请求中读取它是没有意义的。此时文件已存在,您可以直接访问它。
解决方案的一个提示:覆盖getAttributes()
并添加新的IAjaxCallListener
。您可以在那里评估js并将文件大小放在隐藏的字段中(或者在getPrecondition()
中检查文件大小,如果文件很大则返回false)。
答案 1 :(得分:0)
这个答案可能有助于实现更清洁的检票口。