uni-app中app端如何设置“HEAD”请求
uni-app中app端如何设置“HEAD”请求
我现在想获取目标链接下文件的大小,思路是通过header里的"content-length"获取,而理想的请求方式是使用“HEAD”做请求,这一方法可以在不必传输整个响应内容的情况下,就可以获取包含在响应消息头中的元信息,但是uniapp的“uni.request”在app端不支持,请问有没有其他的解决办法?

问题已确认,稍后android 版本会支持head 请求
更多关于uni-app中app端如何设置“HEAD”请求的实战教程也可以访问 https://www.itying.com/category-93-b0.html
目前不支持,后续会支持的
有其他解决方法吗?
回复 y***@qq.com: 试试用get请求。然后获取其中的 content-length字段呢
已经一年了。还是没支持。目前例如视频这样的资源,前端通过head可以快速确定资源失效没,get请求那得把完整的视频资源全都下载下来
已经一年了。还是没支持。目前例如视频这样的资源,前端通过head可以快速确定资源失效没,get请求那得把完整的视频资源全都下载下来
android 下个版本会支持。
在 uni-app 的 App 端,确实无法直接使用 uni.request 发送 HEAD 请求。不过,你可以通过以下两种方法实现:
-
使用条件请求(GET 或 POST)并设置
header中的Range字段
你可以发送一个带有Range: bytes=0-0的 GET 请求,这样服务器会返回文件的一部分(比如第一个字节),并在响应头中包含Content-Length。这样既能获取文件大小,又不会下载整个文件。示例代码:uni.request({ url: '目标文件链接', method: 'GET', header: { 'Range': 'bytes=0-0' }, success: (res) => { const contentLength = res.header['Content-Length']; console.log('文件大小:', contentLength); } }); -
使用原生插件或条件编译
如果上述方法不适用,可以考虑通过条件编译调用原生能力。例如,在 App 端使用plus.net(HTML5+ API)发送 HEAD 请求:// 仅 App 端生效 #ifdef APP-PLUS const req = plus.net.createRequest(); req.open('HEAD', '目标文件链接'); req.onreadystatechange = function() { if (req.readyState === 4) { const contentLength = req.getResponseHeader('Content-Length'); console.log('文件大小:', contentLength); } }; req.send(); #endif


