Javascript js读取zip中的文件名。(仅客户端脚本)
在表单中有多个文件输入现在我必须检查每个文件输入,zip文件不包含任何无效文件(仅允许doc、docx和pdf) 我写Javascript js读取zip中的文件名。(仅客户端脚本),javascript,jquery,zip.js,Javascript,Jquery,Zip.js,在表单中有多个文件输入现在我必须检查每个文件输入,zip文件不包含任何无效文件(仅允许doc、docx和pdf) 我写 <script src="https://code.jquery.com/jquery-2.2.1.js" integrity="sha256-eNcUzO3jsv0XlJLveFEkbB8bA7/CroNpNVk3XpmnwHc=" crossorigin="anonymous"></script> <script type="
<script src="https://code.jquery.com/jquery-2.2.1.js" integrity="sha256-eNcUzO3jsv0XlJLveFEkbB8bA7/CroNpNVk3XpmnwHc=" crossorigin="anonymous"></script>
<script type="text/javascript" src="/js/zip.js"/>
<script type="text/javascript" src="/js/inflate.js"/>
<script type="text/javascript" src="/js/deflate.js"/>
<script type="text/javascript" src="/js/z-worker.js"/>
<script type="text/javascript">
$(document).ready(function () {
if((window.location.href.indexOf("LibraryItemUpload`1&ParentId=7d428470-2234-41c0-85f4-a512d51198c6") > -1) || (window.location.href.indexOf("LibraryItemUpload%601&ParentId=7d428470-2234-41c0-85f4-a512d51198c6") > -1))
{
$("input:file").change(function () {
var regex=new RegExp("^[A-Za-z0-9 ]+$");
var file=this.files[0];
var key = this.value;
var ze = key.split('\\').pop();
var filename = ze.split('.')[0];
var extension=key.split('.').pop().trim().toLowerCase();
if(extension == 'zip')
{
zip.createReader(new zip.BlobReader(file), function(reader) {
// get all entries from the zip
reader.getEntries(function(entries) {
if (entries.length) {
// get first entry content as text
entries[0].getData(new zip.TextWriter(), function(text) {
// text contains the entry data as a String
console.log(text);
// close the zip reader
reader.close(function() {
// onclose callback
});
}, function(current, total) {
// onprogress callback
});
}
});
}, function(error) {
});
}
if (!regex.test(filename)) {
alert('Please do not use special characters in file name please rename file name and upload it again.');
location.reload();
}
else {
return true;
}
});
}
});
</script>
$(文档).ready(函数(){
if((window.location.href.indexOf(“LibraryItemUpload`1&ParentId=7d428470-2234-41c0-85f4-a512d51198c6”)>-1)|(window.location.href.indexOf(“LibraryItemUpload%601&ParentId=7d428470-2234-41c0-85f4-a512d51198c6”)>-1)
{
$(“输入:文件”).change(函数(){
var regex=new RegExp(“^[A-Za-z0-9]+$”;
var file=this.files[0];
var key=this.value;
var ze=key.split('\\').pop();
var filename=ze.split('.')[0];
var extension=key.split('.').pop().trim().toLowerCase();
如果(扩展名='zip')
{
createReader(新的zip.BlobReader(文件),函数(读取器){
//从zip获取所有条目
reader.getEntries(函数(条目){
如果(条目长度){
//以文本形式获取第一个条目内容
条目[0]。getData(新zip.TextWriter(),函数(文本){
//文本以字符串形式包含条目数据
console.log(文本);
//关闭zip读取器
reader.close(函数(){
//onclose回调
});
},功能(当前,总计){
//onprogress回调
});
}
});
},函数(错误){
});
}
如果(!regex.test(filename)){
警报('请不要在文件名中使用特殊字符,请重命名文件名并重新上载');
location.reload();
}
否则{
返回true;
}
});
}
});
并编写了从zip.js读取文件名的代码,但流不在zip.createReader函数中
请建议我,如果另一个javascript可用于读取zip文件,我只希望条目对象读取文件名 函数读取条目(条目){
function readEntries(entries) {
var entryLength = entries.length;
for (i = 0; i < entryLength; i++) {
var entry = entries[i];
var fileName = entry.filename.substring(entry.filename.lastIndexOf("/") + 1); //if inside folder
var ext = fileName.split(".").pop().toLowerCase();
if (ext.toUpperCase() == 'DOC' || ext.toUpperCase() == 'PDF' ||
ext.toUpperCase() == 'DOCX') {
//logic
}
}
}
zip.useWebWorkers = false;//explicitly include (required) zip-workers ['zip.js','zip-fs.js','z-worker.js','inflate.js','deflate.js']
var fileInput = document.getElementById("zipfile");//Input File
fileInput.addEventListener('change', function(event) {
zip.createReader(new zip.BlobReader(fileInput.files[0]), function(zipReader) {
zipReader.getEntries(readEntries);
}, function (error) {
console.log(error);
});
});
var entryLength=entries.length;
对于(i=0;i
我没有测试过这段代码,但我以前使用过类似的逻辑。您的代码看起来不完整,请提供更多代码和错误描述。您是否查看了zip.js文档,其中包含关于在zip中列出条目的信息-