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

推荐订阅源

云风的 BLOG
云风的 BLOG
The GitHub Blog
The GitHub Blog
A
About on SuperTechFans
P
Proofpoint News Feed
G
Google Developers Blog
Stack Overflow Blog
Stack Overflow Blog
IT之家
IT之家
Microsoft Security Blog
Microsoft Security Blog
F
Fortinet All Blogs
人人都是产品经理
人人都是产品经理
博客园 - 叶小钗
C
Check Point Blog
Microsoft Azure Blog
Microsoft Azure Blog
aimingoo的专栏
aimingoo的专栏
月光博客
月光博客
美团技术团队
D
Docker
博客园 - Franky
Y
Y Combinator Blog
大猫的无限游戏
大猫的无限游戏
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
博客园 - 【当耐特】
罗磊的独立博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报

博客园 - 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前端 无法发布网站Web Site
拖放式上传
Insus.NET · 2026-09-13 · via 博客园 - Insus.NET

了解之前,先看看这篇《实现MultipartStreamProvider经Web API上传文档或图片https://www.cnblogs.com/insus/p/22954598
然后在其基础上,修改。

浏览效果如下,拖放,选择上传或者粘贴图片链接上传。有关图片链接上传,需要处理跨域,如果服务器允许 CORS。将响应转换为 Blob,再包装成 File 对象。
2026-09-13_12-05-50

html markup

2026-09-13_12-11-02

<div>
    <div id="dropZone" class="drop-zone">
        <p>将图片拖到此处,或</p>
        <input id="FileImage" type="file" accept="image/jpg,image/jpeg,image/png,image/tiff" />
        <input id="Button_Upload" type="button" value="上传" />
        <br />
        <br />
        <label>或输入图片链接:</label>
        <input id="ImageUrl" type="text" />
        <input id="Button_UploadUrl" type="button" value="上传链接" />
    </div>
</div>

View Code

css style,

2026-09-13_12-13-09

<style>
    .drop-zone {
        border: 2px dashed #ccc;
        border-radius: 10px;
        margin: 25px;
        padding: 30px;
        text-align: center;
        background-color: #fafafa;
        transition: all 0.3s;
    }

        .drop-zone.dragover {
            border-color: #409eff;
            background-color: #ecf5ff;
        }
</style>

View Code

 
跨域设置:

const acao = 'http://localhost:54522';

javascript代码,上传核心方法:
2026-09-13_15-04-26

在html markup中,有设定5个id,在javascript中找到它们。

const dropZone = document.getElementById('dropZone');
const fileInput = document.getElementById('FileImage');
const uploadButton = document.getElementById('BtnUpload');
const urlInput = document.getElementById('ImageUrl');
const urlButton = document.getElementById('BtnUploadUrl');

2026-09-13_15-08-10

 // 点击上传按钮
 uploadButton.addEventListener('click', () => {
     if (fileInput.files.length === 0) {
         alert('请先选择图片');
         return;
     }
     uploadFile(fileInput.files[0]);
 });

View Code


2026-09-13_15-09-56

 // 拖放处理
 dropZone.addEventListener('dragover', (e) => {
     e.preventDefault();
     dropZone.classList.add('dragover');
 });
 dropZone.addEventListener('dragleave', (e) => {
     e.preventDefault();
     dropZone.classList.remove('dragover');
 });
 dropZone.addEventListener('drop', (e) => {
     e.preventDefault();
     dropZone.classList.remove('dragover');
     const file = e.dataTransfer.files[0];
     if (file) {
         uploadFile(file);
     } else {
         alert('请拖入图片文件');
     }
 });

View Code

2026-09-13_15-12-19

 urlButton.addEventListener('click', async () => {
     const imageUrl = urlInput.value.trim();
     if (!imageUrl) {
         alert('请输入图片链接');
         return;
     }
     try {
         const response = await fetch(imageUrl, { mode: 'cors' });
         if (!response.ok) throw new Error('获取图片失败');
         const blob = await response.blob();
         const file = new File([blob], 'image_from_url.jpg', { type: blob.type || 'image/jpeg' });
         uploadFile(file);
         urlInput.value = '';
     } catch (err) {
         alert('无法下载图片,请检查链接或跨域策略');
         urlInput.value = '';
     }
 });

View Code

链接上传,附加辅助功能。
本随笔,着重演示拖放上传功能,替代传统选择文件,点上传。产生效益与效率。