Javascript 使用新dojo上载程序的文件掩码

Javascript 使用新dojo上载程序的文件掩码,javascript,file-upload,dojo,Javascript,File Upload,Dojo,我创建了一个DOJO浏览按钮来将文件上传到服务器。这个按钮很好用。但是,我希望能够将我的文件选择限制为*.jpg文件。在DOJO dojox.form.FileUploader中,我可以使用Filemask属性来选择/屏蔽要上载到服务器的文件。例如: var fileMask = ["Images", "*.jpg;*.jpeg;*.gif;*.png"] var uploader = new dojox.form.FileUploader({ button:dijit.byId("m

我创建了一个DOJO浏览按钮来将文件上传到服务器。这个按钮很好用。但是,我希望能够将我的文件选择限制为*.jpg文件。在DOJO dojox.form.FileUploader中,我可以使用Filemask属性来选择/屏蔽要上载到服务器的文件。例如:

var fileMask = ["Images", "*.jpg;*.jpeg;*.gif;*.png"]

var uploader = new dojox.form.FileUploader({
    button:dijit.byId("myFakeButton"),
    uploadUrl:uploadUrl,
    fileMask:fileMask
});
然而,dojox.form.FileUploader现在已不推荐使用(很快就会被弃用),并被dojo.form.uploader取代。在本文中,我找不到任何可以模拟filemast功能的属性。我读了,但它没有提到任何关于文件掩码


有人面临这个问题吗

您可以通过
accept
属性设置类型,并使用mime类型对其进行配置

dojo.require(“dojox.form.Uploader”);
var tbl=document.getElementById('hola');
var fileInput=document.createElement('input');
fileInput.type='file'//退路
setAttribute(“数据dojo类型”、“dojox.form.Uploader”);
setAttribute('accept','image/jpeg');
setAttribute('data-dojo-props','name:'uploadedfile',label:'selectsomefiles');
tbl.appendChild(文件输入)
div{
边界:1px;
边框样式:虚线;
}

dojox.form.Uploader临时生成一个DOM元素来处理文件上传操作。因此,我们可以跟踪使用dojo.aspect生成的DOM,如下所示:

var uploader = new Uploader({...}, ...);
aspect.after(uploader._inputs, "push", function(method, args) {
    args[0].accept = "image/jpg,image/jpeg,image/gif,image/png";
});

或覆盖上载程序。\u createInput 只需添加一行:

accept : ".xls,.xlsx,.xlsm,.csv" // Just add the line
像这样

_createInput: function(){
alert("_createInput 1");
if(this._inputs.length){
domStyle.set(this.inputNode, {
top:"500px"
});
this._disconnectButton();
this._nameIndex++;
}
alert("_createInput 2");
var name = this._getFileFieldName();
alert("_createInput 3");
// reset focusNode to the inputNode, so when the button is clicked,
// the focus is properly moved to the input element
alert("_createInput 4");
this.focusNode = this.inputNode = domConstruct.create("input", {type:"file", name:name, "aria-labelledby":this.id+"_label",
accept : ".xls,.xlsx,.xlsm,.csv" // Just add the line
}, this.domNode, "first");
alert("_createInput 5");
if(this.supports("multiple") && this.multiple){
domAttr.set(this.inputNode, "multiple", true);
}
alert("_createInput 6");
this._inputs.push(this.inputNode);

alert("_createInput 7");
domStyle.set(this.inputNode, {
position:"absolute",
fontSize:this.inputNodeFontSize+"em",
top:"-3px",
right:"-3px",
opacity:0
});
alert("_createInput 8");
this._connectButton();
alert("_createInput 9");
},

此外,您还可以使用
accept=“image/*”