You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Svelte中如何实现指定文件夹内特定扩展名文件的自动检测导入

可行实现方案

分两种场景对应不同实现:

方案1:Vite构建的Svelte/SvelteKit项目(推荐,完全无需手动选择文件)

这个方案完全满足你固定路径自动导入的需求,利用Vite的import.meta.glob API批量读取固定目录下的所有txt文件,无需用户任何操作。

实现步骤:

  1. 把你要导入的所有.txt文件放在项目固定目录,比如src/assets/target-txt/
  2. 替换原有代码如下:
<script>
    // 批量导入目标目录下所有txt文件,{ eager: true } 表示初始化时直接加载所有内容
    const txtModules = import.meta.glob('/src/assets/target-txt/*.txt', { 
        eager: true,
        as: 'raw' 
    })
    // 整理成和你原有逻辑兼容的格式
    let files = Object.entries(txtModules).map(([filePath, text]) => {
        const fileName = filePath.split('/').pop()
        return {
            file: { name: fileName },
            textPromise: Promise.resolve(text)
        }
    })
</script>

{#each files as {file, textPromise} (file.name)}
        <p>The imported file is: {file.name}</p>
        {#await textPromise then text}
        <pre>{text}</pre>
        {:catch}
        <div>error</div>
        {/await}
{/each}

注意:构建时这些txt文件的内容会被直接打包到你的项目代码中,适合txt文件内容固定、不需要运行时动态修改的场景

方案2:纯浏览器端静态Svelte应用(无构建工具)

浏览器出于本地文件安全限制,不允许JS代码不经用户授权直接读取任意本地路径的文件,所以这种场景下只能做到「用户只需要点击一次选择目标文件夹」,后续自动读取文件夹下所有txt,无需逐个选文件。

实现代码:

<script>
    let files = [];
    
    function contentArray(ev){
            let newlySelected = [...ev.target.files].filter(f => !files.some(ff => ff.file.name === f.name));
            files = [...files, ...newlySelected.map(file => ({file, textPromise: file.text()}))];
    }
</script>

<!-- 加webkitdirectory属性即可支持选择文件夹 -->
<input type='file' multiple webkitdirectory on:change={contentArray} accept=".txt">
{#each files as {file, textPromise} (file.name)}
        <p>The imported file is: {file.name}</p>
        {#await textPromise then text}
        <pre>{text}</pre>
        {:catch}
        <div>error</div>
        {/await}
{/each}

注意:webkitdirectory属性是所有现代浏览器都支持的标准属性,兼容性可以覆盖98%以上的用户设备

方案选择建议

  • 如果你是做内部工具、固定内容的展示类项目,直接选方案1,完全符合你的需求
  • 如果你需要用户运行时自己指定本地文件夹,选方案2即可

内容的提问来源于stack exchange,提问作者Dorian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 12:54:02