1

所以我需要向文档发送附件,但我必须验证它是否大于 15mb ,因此我在 javascript 中使用此代码来获取文件:

var objFSO = new ActiveXObject("Scripting.FileSystemObject"); 
            var filePath = document.getElementById(fileid).value;
            var objFile = objFSO.getFile(filePath);
            var fileSize = objFile.size; //size in kb

当我尝试创建 ActiveXObject 时出现错误,因为我的网站因没有 Web 标记而不受“信任”

<!doctype html>
<!-- saved from url=(0023)http://www.contoso.com/ -->
<html>
  <head>
    <title>A Mark of the Web Example.</title>
  </head>
  <body>
     <p>Hello, World</p>
  </body>
</html>

所以我想知道是否可以在 XPage 中包含 Web 的标记,以及如何将它放在 XPage 的正文中。

我的客户不想手动放置安全选项,但想使用IE,请帮帮我哈哈。

如果在使用 javascript 选择文件时有另一种检查文件大小的方法会很有趣。

4

2 回答 2

4

尝试使用此代码检查 HTML5 中的文件大小应该适用于所有现代浏览器

var fileSize=0
if (typeof FileReader !== "undefined") {
    var filePath = document.getElementById(fileid);
  fileSize= filePath.files[0].size; 
}

检查文件大小变量以获取文件的最大限制。

如果浏览器是 IE10 或更新版本,则使用此代码;如果浏览器较旧,请使用旧代码。

于 2015-08-17T13:59:06.970 回答
0

您可以为旧浏览器创建 Java 验证器,但如果 Javascript API 可用(现代浏览器),请使用它。

public class Attachment implements Validator {

    private final static long BYTES_IN_1_MB     = 1048576;
    private final static long MAX_MB_ALLOWED    = 10;
    private final static String MSG_ERROR_SIZE  = "File size cannot be bigger than {0} MBs";

    public void validate(FacesContext fc, UIComponent uiComp, Object attach)
            throws ValidatorException {     

        FacesMessage msg;

        UploadedFile upFile = (UploadedFile) attach;
        long max_bytes = BYTES_IN_1_MB * MAX_MB_ALLOWED;

        // SIZE:        
        if (upFile.getContentLength() > max_bytes) {
            String msgError = MSG_ERROR_SIZE.replace("{0}", String.valueOf(MAX_MB_ALLOWED));
            msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, msgError, msgError);        
            throw new ValidatorException(msg);
        }       

    }   

}

这些验证器需要添加到 faces-config.xml 中

  <validator>
    <validator-id>attachmentValidator</validator-id>
    <validator-class>com.faces.validator.Attachment</validator-class>
  </validator>

然后您可以将验证器添加到 fileUpload 字段中:

<xp:this.validators>                                    
    <!--    Validator for Attachments   -->
    <xp:validator validatorId="attachmentValidator">
    </xp:validator>
</xp:this.validators>
于 2015-08-18T07:06:20.827 回答