首页 程序笔记 URL.createObjectURL上传图片生成blob预览链接

URL.createObjectURL上传图片生成blob预览链接

上传图片时,一般先让用户预览图片。现在通过URL.createObjectURL方法可以非常简单地获取一个blob的预览图片url。而不需要把文件转为base64或者其他的方法。它在各个主流浏览器也都兼容。

下面用简单的例子实现一个上传图片预览效果

<input
    type="file"
    accept="image/*"
    capture
    onchange="inputChanged(event)"
/>

先需要一个type为file类型的input,这里设置了accept="image/*"和capture可以支持手机端直接拍照获得图片。

这里定义了onchange事件,我们用URL.createObjectURL方法就在这里实现。

<script>
function inputChanged(e) {
    // 获取文件
    var file = e.dataTransfer ? e.dataTransfer.files[0] : e.target.files[0];
    var pattern = /image-*/;
    // 检查文件类型为图片
    if (!file.type.match(pattern)) {
        return;
    }
    // 生成blob url
    var imgDataURL = URL.createObjectURL(file);
    // 修改图片src属性预览图片
    document.getElementById("img").src = imgDataURL;
}
</script>

简单几行代码就能实现图片预览了。

浏览器兼容性

https://caniuse.com/?search=createObjectURL

注意:创建的 blob url 不能用作对象或 iframe src

如果是预览pdf,目前存在已经的问题:

Internet Explorer 间歇性地无法通过此方法加载图像。 PDF.js 改用了数据 URL。(https://github.com/mozilla/pdf.js/issues/3977)

在另一个选项卡中打开 Blob URL 时,iOS 上的 Chrome 似乎有问题,请参阅解决方法(https://stackoverflow.com/questions/24485077/how-to-open-blob-url-on-chrome-ios)。 Samsung Internet 也会出现同样的问题。

Safari 对类型为 application/octet-stream 的 blob 存在严重问题。


1

站心网

上传图片时,一般先让用户预览图片。现在通过URL.createObjectURL方法可以非常简单地获取一个blob的预览图..

为您推荐

基于Dapper的开源Lambda扩展,且支持分库分表自动生成实体之基础

LnskyDB是基于Dapper的Lambda扩展,支持按时间分库分表,也可以自定义分库分表方法.而且可以T4生成实体类免去手写实体类的烦恼.文档地址:https://liningit.github.io/LnskyDB/开源地址:https://github.com/liningit/Ln..

.NET C#连接FTP实现文件上传下载

在 .NET 中可以使用 System.Net.FtpWebRequest 类来连接 FTP 服务器,实现文件上传和下载。以下是实现文件上传和下载的完整代码示例。1. 上传文件到 FTP 服务器using System;using System.IO;using System.Net;class..

5个高性能 .NET Core 图片处理库推荐

在使用 .NET Core 开发中,图片处理是一个常见需求,如图像缩放、裁剪、格式转换和添加水印等。以下是一些推荐的 .NET Core 图片处理库,它们功能强大且支持多种图像处理功能:1. ImageSharp简介:ImageSharp 是一个..

.NET C# 读取编辑.AVIF图片文件

在 .NET 中读取和编辑 .AVIF 图片文件需要特定的库支持,因为 System.Drawing 等内置功能不直接支持 AVIF 格式。目前可以通过以下方式在 .NET 中实现对 AVIF 文件的读取和编辑:方法一:使用 ImageMagick 的 .NET 封..

.NET C# SkiaSharp读取.AVIF图片文件报错

SkiaSharp 目前对 .AVIF 格式的支持可能依赖于具体的版本和底层库的配置。如果在使用 SkiaSharp 时尝试读取 .AVIF 文件报错,以下是一些可能的原因和解决方案:1. 检查 SkiaSharp 的版本SkiaSharp 的支持功能取决于..

微软 .NET 9 正式发布!专为云原生和生成式 AI 应用设计

微软正式发布了 .NET 9,这是一次重大的版本更新。微软在 .NET 9 中带来了一系列新特性和改进,主要聚焦在性能优化、云原生支持、AI集成以及开发者体验的提升。以下是一些重要的更新亮点:性能改进:在 .NET 9 中,..

ideogram.ai 人工智能AI图片生成工具网站

Ideogram是一个由前Google Brain员工创立的AI绘画工具,它能够根据文本生成各种风格的图像,尤其擅长准确生成文本内容和抽象图标。Ideogram官网地址:https://ideogram.ai/loginIdeogram是由前Google Brain员工在202..

文件上传JavaScript库FilePond使用教程

传统的文件上传控件往往显得笨拙且不够用户友好。FilePond的出现,为Web文件上传带来了革命性的改变。本文将详细介绍FilePond这一JavaScript库,探讨它如何优化文件上传流程,并提供无与伦比的用户体验。什么是FileP..

Web应用安全之八种安全的文件上传方式

为了让最终用户将文件上传到您的网站,就像是给危及您的服务器的恶意用户打开了另一扇门。即便如此,在今天的现代互联网的Web应用程序,它是一种常见的要求,因为它有助于提高您的业务效率。在Facebook和Twitter等..

ASP.NET生成图片验证码

今天开始做一个新项目,包含完整的注册登陆流程,在登陆时需要输入验证码防止暴力破解。 制作思路是这样的: 准备使用handler一般处理程序来写,先随机从0-9和A-Z里随机取4个数字,将内容保存在Session中供验证时使..

Docsify | 轻量级无静态构建文档站点生成器

什么是 Docsify?Docsify 可以即时生成你的文档网站。与 GitBook 不同,它不会生成静态 html 文件。相反,它会智能地加载和解析你的 Markdown 文件并将其显示为网站。要开始使用它,你需要做的就是创建一个 index.ht..

WebClient上传文件方法UploadFile

测试环境 服务器端:Windows Server 2003,IIS6.0. 上传文件的代码: [csharp] view plaincopy在CODE上查看代码片派生到我的代码片 using (WebClient client = new WebClient() { Credentials = CredentialCache.De..

c# 输出base64图片格式

项目中要输出二维码图片,打算在接口中输出base64字符串。Base64编码在Web方面有很多应用,.Net Framework也提供了现成的功能类(System.Convert)用于将二进制数据转换为Base64字符串。先使用ThoughtWorks.QRCode生成..

c#无损压缩图片代码,可设置压缩质量

之前写过一篇文章《使用htmlagilitypack+xpath抓取网页内容示例》,提到使用htmlagilitypack抓取网页信息。想做一个网络爬虫,但是想把网页上的图片也下载到本地,于是写了下载图片的功能。但是第三方网站上的图片大..

.NET Core上传文件报Access xxx.tmp is denied错误

.NET Core上传文件本地调试正常,部署到IIS服务器之后会报错,错误是Access 'c:\\windows\\temp\\xxx.tmp' is denied.看上去是IIS用户没有权限访问系统临时文件夹的权限。经过测试,不需要特地去为temp文件..

.NET Core c#使用SkiaSharp压缩裁切图片去除水印

在.NET 6中,微软官方建议使用SkiaSharp库进行图片操作。本文主要介绍使用SkiaSharp库压缩裁切图片去除水印。做图片压缩和去除水印,主要是为了在网站中使用图片。比如抓取某网站的文章和图片发布到自己的网站中。但..

.NET Core c#使用SkiaSharp压缩图片

在.NET 6中,微软不建议使用System.Drawing.Common。因为System.Drawing.Common被设计为Window 技术的精简包装器,因此其跨平台实现欠佳。官方建议使用SkiaSharp库进行图片操作。.NET 6 c#使用SkiaSharp压缩图片是比..

c# HttpClient下载图片

c# .NET Core中使用WebClient下载图片会提示已经弃用,推荐使用HttpClient。那么.NET core中如何使用HttpClient下载图片呢?在C#中使用HttpClient下载图片,下面是代码示例:usingSystem;usingSystem.Net.Http;using..

使用C#为图片去除水印

在C#中,你可以使用图像处理库来为图片去除水印。以下是一个基本的示例代码,使用AForge.NET图像处理库来去除图片中的水印:首先,确保你已经安装了AForge.NET库。你可以在Visual Studio的NuGet包管理器中搜索并安装..

.NET生成二维码

在 .NET 中,可以使用 ZXing.Net 类库来生成二维码。ZXing.Net 是基于开源的 ZXing 项目的 .NET 实现。要使用 ZXing.Net 生成二维码,需要首先将 ZXing.Net 类库添加到项目中。可以通过 NuGet 包管理器来安装 ZXing...

发表回复

返回顶部