下载Content-Type,Blob type类型汇总

本文探讨了各种文件类型的常见类别,包括文档、二进制、执行文件、库等,并重点介绍了HTML、CSS、JavaScript等前端开发技术,后端领域的PHP、Java,以及移动开发中的iOS和Android。此外,文章还涵盖了大数据、云计算、AI音视频处理等现代技术热点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

'doc' => 'application/msword',
'bin' => 'application/octet-stream',
'exe' => 'application/octet-stream',
'so' => 'application/octet-stream',
'dll' => 'application/octet-stream',
'pdf' => 'application/pdf',
'ai' => 'application/postscript',
'xls' => 'application/vnd.ms-excel',
'ppt' => 'application/vnd.ms-powerpoint',
'dir' => 'application/x-director',
'js' => 'application/x-javascript',
'swf' => 'application/x-shockwave-flash',
'xhtml' => 'application/xhtml+xml',
'xht' => 'application/xhtml+xml',
'zip' => 'application/zip',
'mid' => 'audio/midi',
'midi' => 'audio/midi',
'mp3' => 'audio/mpeg',
'rm' => 'audio/x-pn-realaudio',
'rpm' => 'audio/x-pn-realaudio-plugin',
'wav' => 'audio/x-wav',
'bmp' => 'image/bmp',
'gif' => 'image/gif',
'jpeg' => 'image/jpeg',
'jpg' => 'image/jpeg',
'png' => 'image/png',
'css' => 'text/css',
'html' => 'text/html',
'htm' => 'text/html',
'txt' => 'text/plain',
'xsl' => 'text/xml',
'xml' => 'text/xml',
'mpeg' => 'video/mpeg',
'mpg' => 'video/mpeg',
'avi' => 'video/x-msvideo',
'movie' => 'video/x-sgi-movie',

### 如何正确处理 HTTP Response 或 API Response #### 处理 HttpResponseMessage 和 HttpResponseMessage 的差异 HttpResponseMessage 是一种常见的 .NET Web API 响应机制,主要用于构建和发送 HTTP 响应消息。它不仅包含了状态码 (status code),还可能携带数据内容或其他元信息。如果需要创建一个 HttpResponseMessage 实例,则可以通过 `Request.CreateResponse` 方法实现[^1]。 对于 FastAPI 用户而言,`response_model` 参数提供了一种更现代化的方式定义 API 响应结构。通过指定 Python 类作为模型,FastAPI 能够自动生成 JSON Schema 并验证返回值是否符合预期类型[^2]。这种方式显著减少了手动编码错误的可能性,并增强了开发体验。 #### 下载文件时的特殊场景——Axios 请求中的 responseType 设置 当使用 Axios 进行前端请求时,若目标是从服务器获取二进制文件流而非纯文本或 JSON 数据,则需特别注意配置项 `responseType` 的设定。例如: - 当设置为 `'arraybuffer'` 时,即使后端实际返回的是 JSON 对象(如发生异常),该对象也会被强制转换成 ArrayBuffer 形式传递给客户端[^4]。 因此,在这种情况下,建议开发者先尝试解析接收到的内容以判断其真实性质。以下是具体代码示例: ```javascript async function fetchFileOrError(url, config = {}) { try { const response = await axios.get(url, { ...config, responseType: 'arraybuffer' }); // 尝试检测 Content-Type 是否表明这是一个有效的文件 if (!response.headers['content-type'].startsWith('application/json')) { const blob = new Blob([response.data], { type: response.headers['content-type'] }); return URL.createObjectURL(blob); // 返回可供浏览器使用的临时链接地址 } else { throw new Error("Unexpected content type"); } } catch (error) { let errorMessage; if (error.response && error.response.status === 500) { // 如果服务端返回了标准错误格式 {"Status": ..., "StatusCode": ..., "Result":...} const arrayBuffer = error.response.data; const jsonString = String.fromCharCode.apply(null, new Uint8Array(arrayBuffer)); const parsedJson = JSON.parse(jsonString); errorMessage = `${parsedJson.Status} (${parsedJson.StatusCode}): ${parsedJson.Result}`; } else { errorMessage = error.message || "An unknown error occurred"; } console.error(errorMessage); return null; } } // 使用方法 fetchFileOrError('/api/download', {}).then(fileUrl => { if (fileUrl) window.open(fileUrl); }); ``` 上述脚本展示了如何安全地从远程接口拉取资源的同时妥善应对潜在的服务层问题。 --- #### 并发调用外部 API 及等待响应完成 针对并发执行多个异步任务的需求,通常推荐利用 JavaScript Promise.all() 函数来简化逻辑控制流程。下面是一个简单的例子说明如何同时发起若干次独立查询并将它们的结果汇总起来再做进一步分析: ```javascript const apiEndpoints = ['/endpointA', '/endpointB', '/endpointC']; function fetchDataFromEndpoint(endpoint) { return axios.get(`https://example.com${endpoint}`); } Promise.all(apiEndpoints.map(fetchDataFromEndpoint)) .then(responses => responses.forEach(response => console.log(response.data))) .catch(error => console.error('One of the requests failed:', error)); ``` 此模式允许程序一次性启动所有必要的网络活动而无需逐一阻塞等待前序操作结束后再继续下一步骤[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱写程序的小高

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值