You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android应用内运行GO静态服务器访问本地图片返回404问题求助

问题原因

  • 路径格式错误:http.Dir() 接收的是本地文件系统的原生绝对路径,不支持 file:// 协议前缀,你传入带协议的路径会被当作普通字符串解析,系统找不到对应目录,自然返回404。
  • 静态服务路径前缀匹配错误:直接将/android/绑定到FileServer时,请求路径中的/android/部分会被保留作为查找文件的路径片段,也就是访问/android/myfile.jpg时,服务端会尝试在你指定的目录下查找android/myfile.jpg,而不是根目录下的myfile.jpg,路径匹配失败。
  • Android权限未授予:如果App没有申请对应存储目录的读取权限,Go运行时没有权限读取媒体目录下的文件,也会返回404错误。

解决方案

  1. 移除路径的file://前缀,直接传入原生绝对路径
  2. 使用http.StripPrefix去掉请求路径中的/android/前缀,保证FileServer查找文件时路径正确
  3. 检查并申请Android存储读取权限:
    • Android 13及以上版本需要在AndroidManifest.xml中声明android.permission.READ_MEDIA_IMAGES权限,同时完成动态权限申请
    • Android 12及以下版本需要声明android.permission.READ_EXTERNAL_STORAGE权限并完成动态权限申请

修改后的完整代码如下:

fsAndroid := http.FileServer(http.Dir("/storage/emulated/0/Android/media/com.myapp/"))
http.Handle("/android/", http.StripPrefix("/android/", fsAndroid))

go func() {
    log.Println(http.ListenAndServe("127.0.0.1:6060", nil))
    <-c
}()

如果修改后仍存在问题,可以在服务启动阶段加日志打印目标目录的文件列表,确认路径正确性和读取权限正常。

内容的提问来源于stack exchange,提问作者Hasan A Yousef

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 06:39:03