在我的应用程序中,我有一个包含一些字段和input file
字段的表单,一旦用户上传zip file
,我想获取此zip file
中包含的文件的名称}。
这是表格:
<input type="text" name="code" value="CodeValue">
<input type="text" name="Comment" value="commentValue">
<input type="file" name="zipFile" value="zipValue" accept="application/zip"
onchange="getzipFilesNames();" id="file-input">
<script>
function getzipFilesNames() {
}
</script>
我不需要提取文件,我只需要他们的名字。我怎么能用javascript做到这一点?
答案 0 :(得分:1)
我找到了一种使用JSUnzip库和JSInflate库的简单方法:这是一个示例代码:
var filesInput = document.getElementById("file-input").files[0];
var res;
var reader = new FileReader();
reader.readAsBinaryString(filesInput);
reader.onloadend = function(e){
var myZip = e.target.result;
var unzipper = new JSUnzip(myZip);
unzipper.readEntries();
var myFiles = unzipper.entries;
for(var i=0; i<myFiles.length; i++) {
var name = myFiles[i].fileName; // This is the file name
var content = JSInflate.inflate(myFiles[i].data); // this is the content of the files within the zip file.
}
}
答案 1 :(得分:-1)
要执行此客户端,您需要使用File API读取文件(有关示例,请参阅this answer),然后解释zip数据以提取文件名。有些库可以帮助完成第二部分,例如jszip。
答案 2 :(得分:-1)
function readFiles(){ var files = document.getElementById('files')。files [0];
var reader = new FileReader()
reader.readAsBinaryString(files)
reader.onload = (e) => {
var myZip = e.target.result
var unzipper = new JSUnzip(myZip);
var readEntries = unzipper.readEntries();
var myFiles = unzipper.entries;
for(var i = 0; i < myFiles.length; i++) {
var name = myFiles[i].fileName;
console.log('filename = ', name)
}
}
}