惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

V
Visual Studio Blog
Recent Announcements
Recent Announcements
有赞技术团队
有赞技术团队
The GitHub Blog
The GitHub Blog
N
Netflix TechBlog - Medium
腾讯CDC
A
About on SuperTechFans
博客园 - 叶小钗
大猫的无限游戏
大猫的无限游戏
小众软件
小众软件
D
DataBreaches.Net
D
Docker
宝玉的分享
宝玉的分享
量子位
Microsoft Azure Blog
Microsoft Azure Blog
Martin Fowler
Martin Fowler
博客园 - 三生石上(FineUI控件)
Jina AI
Jina AI
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
V
V2EX
Last Week in AI
Last Week in AI
H
Help Net Security
Hugging Face - Blog
Hugging Face - Blog
M
MIT News - Artificial intelligence

博客园 - Insus.NET

Vue的v-show实践 HTTP Error 404.0 - Not Found Vue3实现拖放式上传 拖放式上传 实现MultipartStreamProvider经Web API上传文档或图片 文件上传和表单字段混合提交 在HttpContext.Current返回null时如何操作 angularjs根据类型动态加载组件 angularjs获取数据服务 扫一扫直连WiFi二维码 User Profile Service 服务未能登录 Visual Studio2026创建Vue项目 安装与配置node.js HTTP Error 403.14 - Forbidden VisualStudio2026回滚上一版本 消息认证码(加强) 网站无法使用插值字符串语法 HMAC(Hash-based Message Authentication Code)认证示例 浏览器自动发送域凭据 企业内小网站兼用Windows验证登录 访问用户控件的函数 onblur事件改为监听处理 将警报消息改为吐司消息 内容有无变化OnBlur即时更新引起的问题与解决 混合式提高用户编辑与操作效率 光标离开文框后即刻更新 WebForm实现Web API JavaScript对GridView删除行后并重新给其数据绑定 把CS值传给JS使用 v2 确认信息confirm由C#后端移至javascript前端
在javascript或vue探测文件是否存在
Insus.NET · 2026-09-16 · via 博客园 - Insus.NET

https://www.cnblogs.com/insus/p/22982421链接随笔中,Insus.NET有分享了一个判断文件是否存在的方法。

此本次,对那个方法进行另写,前一个方法,以array传作检测,如今改为直接传入单文件路径来判断。可以参考下面简单的代码,
2026-09-16_04-26-42

 const checkFileExist = async (url) => {
     try {
         const res = await fetch(url, {
             method: 'GET',
             headers: { Range: 'bytes=0-0' },  // 只要第一个字节
             cache: 'no-store',
         })
         return res.ok
     } catch {
         return false
     }
 };

View Code

如何调用?

 const url = '/temp/' + item.ImageFileName;
 if (!item.ImageFileName && await checkFileExist(url)) {
     iframe.src = url;
 } else {
     //文档不存在或被删除。
 }


或者,把判断分开写,

if (!item.ImageFileName) {                       
    return;
}

const url = '/temp/' + item.ImageFileName;
const exists = await checkFileExist(url);

if (exists) {
    iframe.src = url;
} else {
    //文档不存在或被删除。
}

异步方法,在调用时,需要使用await不然得到的结果永远为true,因为Promise 是 truthy 的,所以这个条件永远为真

借本篇篇辐,对“ 文档不存在或被删除。”进行重构,让其优雅一点。

还一点需要重构的,就是每张图片之间切换点击查看时,留在iframe的历史影像需要预先清除。

2026-09-16_05-01-20

// 现成的"文档不存在"提示页
function showEmptyMessage(iframe, text = '文档不存在或被删除') {
    showInIframe(iframe, `
    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8">
    </head>
    <body style="margin:0;height:100vh;display:flex;align-items:center;justify-content:center;
                 color:#999;font-family:system-ui,-apple-system,sans-serif;background:#fafafa;">
        ${text}
    </body>
    </html>
    `);
}

View Code

写成html并嵌入其中。显示真实的text你是可以赋值的。

 // 在 iframe 里显示提示文字
 function showInIframe(iframe, html) {
     iframe.removeAttribute('src');      // 先清掉 src,避免它覆盖 srcdoc,清理遗留。
     iframe.srcdoc = html;
 }
// 清空 iframe(比如切换文件或图片查看时)
function clearIframe(iframe) {
    iframe.removeAttribute('srcdoc');
    iframe.src = 'about:blank';
}

完整的onView事件,
2026-09-16_05-16-28

const onView = async (item) => {
    const iframe = document.getElementById('frameContainer');
    if (!iframe) return;

    loading.value = true;
    error.value = '';

    try {
        // 1. 没有文件名,直接提示
        if (!item.ImageFileName) {
            showEmptyMessage(iframe);  //以前是没有文件名null时,直接return。现在显示上面写的showEmptyMessage(...)方法。
            return;
        }

        const url = '/temp/' + item.ImageFileName;

        // 2. 探测文件是否存在
        const exists = await checkFileExist(url);

        if (exists) {
            iframe.removeAttribute('srcdoc');   // 清掉上一次可能的 srcdoc
            iframe.src = url;
        } else {
            showEmptyMessage(iframe);  
        }
    } catch (err) {
        error.value = '查看图片失败:' + err.message;
        showEmptyMessage(iframe, '加载失败:' + err.message);
    } finally {
        loading.value = false;
    }
}

View Code

连续几篇,针对相同问题,几种方法,判断逻辑,呈现给用户内容。多样比,可以学习之或参考。