前端接收,text/html类型 的图片流

这段代码展示了如何通过XMLHttpRequest获取图片的Blob数据,并利用window.URL.createObjectURL将Blob转换为URL,加载到img元素中显示。在图片加载完成后,通过window.URL.revokeObjectURL释放内存。

长这个样子在这里插入图片描述

<div class="headL"></div>

用到window.URL.revokeObjectURLwindow.URL.createObjectURL

<script>
  var xhr = new XMLHttpRequest();
  xhr.open("GET", "图片URL", true);
  xhr.responseType = "blob";
  xhr.onload = function () {
    var blob = this.response;
    var img = document.createElement("img");
    img.onload = function (e) {
      window.URL.revokeObjectURL(img.src);
    };
    img.src = window.URL.createObjectURL(blob);
    $(".headL").html(img);
  }
  xhr.send();
</script>
### 服务器返回 `Content-Type: text/html` 的问题分析与解决 当服务器返回 `Content-Type: text/html` 而不是视频文件应有的 MIME 类型(如 `video/mp4`)时,说明服务器未正确识别或处理该视频文件的请求。这通常发生在文件路径错误、服务器配置缺失或动态路由处理不当的情况下。 #### 1. 确认请求的文件路径是否正确 如果请求的 URL 实际上指向一个 HTML 页面而非视频文件,则服务器会返回 `text/html` 的 MIME 类型。例如,当 `.mp4` 文件不存在时,服务器可能重定向到 404 页面,导致浏览器接收HTML 内容。 ```bash curl -I http://yourdomain.com/videos/sample.mp4 ``` 在返回结果中应看到: ``` Content-Type: video/mp4 ``` 若返回的是 `text/html`,则应检查该 URL 是否确实指向了视频文件,并确保文件存在且路径正确[^1]。 #### 2. 检查服务器配置是否正确 服务器需要正确配置以识别视频扩展名并返回对应的 MIME 类型。 - **Apache 服务器**:在 `.htaccess` 或 `httpd.conf` 中添加以下内容以确保 `.mp4`、`.webm`、`.ogg` 等扩展名返回正确的 MIME 类型: ```apache AddType video/mp4 .mp4 AddType video/webm .webm AddType video/ogg .ogg ``` - **Nginx 服务器**:在配置文件中添加: ```nginx location ~ \.mp4$ { add_header Content-Type video/mp4; } location ~ \.webm$ { add_header Content-Type video/webm; } location ~ \.ogg$ { add_header Content-Type video/ogg; } ``` 配置完成后重启或重载 Nginx 服务以应用更改[^1]。 - **IIS 服务器**:在 IIS 管理器中进入“MIME 类型”设置,确保以下映射已存在或手动添加: ``` .mp4 video/mp4 .webm video/webm .ogg video/ogg ``` #### 3. 检查服务器是否使用了动态路由或重写规则 某些 CMS 或前端框架(如 React、Vue)使用 HTML5 History 模式进行路由,可能导致视频文件请求被重定向到 `index.html`,从而返回 `text/html`。应确保服务器配置排除了对静态资源(如 `.mp4`)的重写规则。 例如,在 Nginx 中配置如下规则以避免重定向: ```nginx location /videos/ { try_files $uri $uri/ /videos/index.html; } ``` 确保视频文件路径不在重写规则范围内。 #### 4. 使用开发者工具检查网络请求 打开浏览器的开发者工具(F12),切换到“Network”标签页,播放页面中的 `<video>` 元素,查看对应的视频请求。在响应头中确认 `Content-Type` 是否为正确的视频 MIME 类型。若仍为 `text/html`,则说明请求的 URL 可能被错误地路由到了 HTML 页面。 #### 5. 验证 HTML `<video>` 标签的使用方式 确保 `<video>` 标签中的 `<source>` 元素指定了正确的 `src` 和 `type` 属性: ```html <video controls> <source src="video.mp4" type="video/mp4"> 您的浏览器不支持视频播放。 </video> ``` 即使 `type` 属性正确,若服务器返回的是 `text/html`,浏览器仍可能无法播放视频。 --- ###
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值