首页 > 解决方案 > 在Android中加载图像作为静态服务器

问题描述

我正在尝试GO在我的 Android 应用程序中运行服务器,该应用程序正在运行相机,并将文件保存在:

file:///storage/emulated/0/Android/media/com.myapp/

我试图将此浴定义为我的服务器中的静态路径,如:

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

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

但是一旦我试图打开保存在那里的文件,从相机中取出后,我会去:

http://127.0.0.1:6060/android/myfile.jpg

我得到了404 page not found

任何想法?

标签: go

解决方案


我解决了它,并分享了我的文件:这里

  1. 从 Go 开始,我使用了,感谢上面的fizzie注释:
    fsAndroid := http.FileServer(http.Dir("/storage/emulated/0/")) // Pictures/tk.cocoon/

    http.Handle("/android/", http.StripPrefix("/android/", fsAndroid))
  1. 在 Android 中,我使用:
interface ImageUri {
    companion object {
        fun create() : Uri? {
            // Create an image file name
            val timeStamp = SimpleDateFormat("yyyyMMdd_HHmmss", Locale.getDefault()).format(Date())
            Global.fileName = "IMG_${timeStamp}.jpg"
            Global.filePath = "Pictures/tk.cocoon/IMG_${timeStamp}.jpg"

            val resolver = Global.context.contentResolver
            val contentValues = ContentValues().apply {
                put(MediaStore.MediaColumns.DISPLAY_NAME, Global.fileName)
                put(MediaStore.MediaColumns.MIME_TYPE, "image/jpeg")
                //put(MediaStore.MediaColumns.RELATIVE_PATH, "Android/media/tk.cocoon/")
                put(MediaStore.MediaColumns.RELATIVE_PATH, "Pictures/tk.cocoon/")
            }
            Global.photoURI = resolver.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, contentValues)
            return Global.photoURI
        }
    }
}

推荐阅读