yasuo56 2022-07-25 06:31 采纳率: 40%
浏览 641
已结题

前端点击下载路径选择

如何在点击下载之后弹窗 并出现类似百度网盘的路径选择操作
可是我试过存在浏览器安全策略,获取不到文件地址

img

  • 写回答

1条回答 默认 最新

  • 谷雨睡不醒 2022-07-26 09:10
    关注

    前端页面不同于本地应用,获取的权限相当有限。下载位置由浏览器指定。
    之前也许可以通过ActiveXObject之类的实现,现在应该没有人这么做了吧。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
    努力当上钱厚端 2024-10-09 05:16

    https://img-mid.csdnimg.cn/release/static/image/mid/ask/e97bb1caadad4f74b5ba0798ddd3460a.gif

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8">
            <meta name="viewport" content="width=device-width, initial-scale=1.0">
            <title>选择保存目录示例</title>
            <style>
                #edit {
                    display: none;
                }
            </style>
        </head>
        <body>
            <h2>选择保存目录示例</h2>
            <button id="save" onclick="choosePath()">选择位置</button>
            <button id="edit" onclick="editFile()">修改文件</button>
    
            <script>
                const saveBTN = document.querySelector("#save");
                const editBTN = document.querySelector("#edit");
    
                var writable;
                async function choosePath() {
                    try {
                        // 打开保存文件对话框     https://developer.mozilla.org/zh-CN/docs/Web/API/Window/showSaveFilePicker
                        const handle = await window.showSaveFilePicker({
                            types: [{
                                description: '文件',
                                accept: {
                                    'text/plain': ['.txt'],
                                    // 'application/pdf': ['.pdf'],
                                    // 'image/jpeg': ['.jpg', '.jpeg'],
                                    // 'image/png': ['.png']
                                }
                            }],
                            excludeAcceptAllOption: true
                        });
    
                        // 创建文件实例
                        writable = await handle.createWritable();
                        createFile();
                    } catch (error) {
                        alert('文件保存失败:', error);
                    }
                };
    
                async function createFile() {
                    const message = prompt("请输入写入的内容:");
                    await writable.write(message);
                    alert('文件保存成功');
                    saveBTN.style.display = "none";
                    editBTN.style.display = "block";
                }
    
                async function editFile() {
                    const message = prompt("请输入修改的内容:");
                    await writable.write(message);
                    await writable.close();
                    alert('文件修改成功');
                }
            </script>
        </body>
    </html>
    
    

    回复
    努力当上钱厚端 2024-10-09 05:18

    https://img-mid.csdnimg.cn/release/static/image/mid/ask/e97bb1caadad4f74b5ba0798ddd3460a.gif

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8">
            <meta name="viewport" content="width=device-width, initial-scale=1.0">
            <title>选择保存目录示例</title>
            <style>
                #edit {
                    display: none;
                }
            </style>
        </head>
        <body>
            <h2>选择保存目录示例</h2>
            <button id="save" onclick="choosePath()">选择位置</button>
            <button id="edit" onclick="editFile()">修改文件</button>
    
            <script>
                const saveBTN = document.querySelector("#save");
                const editBTN = document.querySelector("#edit");
    
                var writable;
                async function choosePath() {
                    try {
                        // 打开保存文件对话框     https://developer.mozilla.org/zh-CN/docs/Web/API/Window/showSaveFilePicker
                        const handle = await window.showSaveFilePicker({
                            types: [{
                                description: '文件',
                                accept: {
                                    'text/plain': ['.txt'],
                                    // 'application/pdf': ['.pdf'],
                                    // 'image/jpeg': ['.jpg', '.jpeg'],
                                    // 'image/png': ['.png']
                                }
                            }],
                            excludeAcceptAllOption: true
                        });
    
                        // 创建文件实例
                        writable = await handle.createWritable();
                        createFile();
                    } catch (error) {
                        alert('文件保存失败:', error);
                    }
                };
    
                async function createFile() {
                    const message = prompt("请输入写入的内容:");
                    await writable.write(message);
                    alert('文件保存成功');
                    saveBTN.style.display = "none";
                    editBTN.style.display = "block";
                }
    
                async function editFile() {
                    const message = prompt("请输入修改的内容:");
                    await writable.write(message);
                    await writable.close();
                    alert('文件修改成功');
                }
            </script>
        </body>
    </html>
    
    

    回复
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 8月24日
  • 已采纳回答 8月17日
  • 创建了问题 7月25日
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部