我想为上传的图像生成带有文件名的随机id。
我的代码是
var getUniqueMacroName = function(filename){
var Name = $.trim(filename.replace(/.[^.]+$/,'').replace(/ /g, "").replace(/[^\w]|_/g, "").toUpperCase());
var Ext = $.trim(filename.replace(/^.*\./,'').toUpperCase());
var mac= _.map($("#data").DataTable().data(), function(a){return a[0]});
var fileRand = Name.substring(0, (10 - fileExt.length));
while(_.contains(mac, ("GM" + fileRand + fileExt))){
var rand = Math.min(Math.floor((Math.random() * fileRand.length) + 5), (fileRand.length - 1));
fileRand = (fileRand.substring(0, rand) + rand + fileRand.substring(rand, fileRand.length)).substring(0, (10 - Ext.length));
}
return "GM" + fileRand + Ext;
}如果我上传这些图片
第六个映像是执行无限次的,而当上传的图像名几乎有condition.This时,浏览器将不会响应。
是否有任何方法为javascript或jquery中的任何类型的文件名(包括相同的文件名)生成唯一的id。
发布于 2015-09-10 11:50:33
由编辑的用户建议有用的答案;
是的,您可以使用TimeStamp作为Date.now()的唯一ID;它生成毫秒,并且它们总是唯一的;
now()方法以数字的形式返回自1970年1月1日00:00:00 :00 UTC到现在为止经过的毫秒。
var getUniqueMacroName = function(filename){
var Name = $.trim(filename.replace(/.[^.]+$/,'').replace(/ /g, "").replace(/[^\w]|_/g, "").toUpperCase());
var Ext = $.trim(filename.replace(/^.*\./,'').toUpperCase());
var mac= _.map($("#data").DataTable().data(), function(a){return a[0]});
// dont need anymore control unique
var fileRand = Date.getTime();
fileRand = fileRand.substr(fileRand.length - 10);
return "GM" + fileRand + Ext;
}发布于 2015-09-11 06:35:33
如果你生成一个更长的“随机”数字,你的方法就能奏效吗?
var random = Math.random()*100000000000000000; // e.g. 6137274974025786https://stackoverflow.com/questions/32500652
复制相似问题