当前位置: 首页 > news >正文

Go图片列表

需求

在一个页面浏览目录下所有图片

代码

package mainimport ("net/http""fmt""io/ioutil""sort""strings""strconv""net/url"
)func handleRequest(w http.ResponseWriter, r *http.Request) {	decodedUrl, err := url.QueryUnescape(r.RequestURI)fmt.Println(r.Proto + " " + r.Host + " " + decodedUrl)    //dir, err := ioutil.ReadDir("." + r.RequestURI)dirr := "../../pic" //本地根目录:上级/上级/picdir, err := ioutil.ReadDir(dirr + decodedUrl)//排序sort.Slice(dir, func(i, j int) bool {di := dir[i]dj := dir[j]if di.IsDir() && !dj.IsDir() { // 目录在前return true} else if !di.IsDir() && dj.IsDir() { // 目录在后return false}//return dir[i].Name() < dir[j].Name() //和WIN7不一样return dir[i].ModTime().Before(dir[j].ModTime())})if err != nil {//http.ServeFile(w, r, "." + decodedUrl);http.ServeFile(w, r, dirr + decodedUrl);} else {path := "/"if (decodedUrl != "/") {n := strings.LastIndex(decodedUrl, "/");if (n != 0) {path = string(decodedUrl[:n])}}ddir := ""if (r.RequestURI != "/") {ddir = " <a href=''>删除此目录</a>"}str := "<html>\n<head>\n<title>文件列表</title>\n</head>\n<style>\na, img { -webkit-user-drag:none; }\na { text-decoration:none; padding:10px; margin:10px; background:lightgray; display:inline-block; }\na:hover { background:gray; }\nimg { max-width: 100%; }\n</style>\n<body>\n<p><a href='" + path + "'>[" + path + "]</a>" + ddir + "</p>"path = "/"if (r.RequestURI != "/") {path = r.RequestURI + "/"}var count_dir, count_file intfor _, file := range dir {if (file.IsDir()) {				str += "<a href='" + path + file.Name() + "'>" + file.Name() + "</a>\n"count_dir++} else {			str += "<img src='" + path + file.Name() +"'>\n"//str += "<video src='" + r.RequestURI + "/" + file.Name() + "' controls='controls'></video>\n"count_file++}}	str += "<p>目录" + strconv.Itoa(count_dir) + "个,文件" + strconv.Itoa(count_file) + "个</p>\n</body>\n</html>"w.Write([]byte(str))}
}func main() {	fmt.Println("http://localhost:8000");http.HandleFunc("/", handleRequest);http.ListenAndServe(":8000", nil);
}

注意

不支持中文目录用 url.QueryUnescape() 解决了。

问题

1.删除目录没有实现

2.根据文件头判断文件类型进行不同处理没有实现

3.根目录只支持相对路径

http://www.lryc.cn/news/341776.html

相关文章:

  • 1.4 初探JdbcTemplate操作
  • React 第二十一章 Portals
  • ADS基础教程9-理想模型和厂商模型实现及对比
  • 从零开始学AI绘画,万字Stable Diffusion终极教程(二)
  • electron 通信总结
  • [基础] Unity Shader:顶点着色器(vert)函数
  • 什么是数据库的三大范式?
  • ASP.NET网上图书预约系统的设计
  • 双色球案例【C#】
  • 【LeetCode刷题】739. 每日温度(单调栈)
  • Docker-Consul容器服务更新与发现
  • 练习题(2024/5/6)
  • 利用matplotlib和networkx绘制有向图[显示边的权重]
  • Springboot+Vue项目-基于Java+MySQL的教学资料管理系统(附源码+演示视频+LW)
  • 从NoSQL到NewSQL——10年代大数据浪潮下的技术革新
  • 巴菲特股东大会5万字完整版来了!
  • LY/T 1860-2022 非甲醛类热塑性树脂胶合板检测
  • 信息管理与信息系统就业方向及前景分析
  • TCP的三次握手过程
  • Microsoft 推出 Phi-3 系列紧凑型语言模型
  • Retrofit库中,Call​;Retrofit使用举例;@GET,@PUT区别;
  • # 怎么关闭 win10 系统中自带的【文件预览】功能?关闭WIN10【文件预览】功能的方法
  • 强化学习玩flappy_bird
  • JavaWeb请求响应概述
  • 【IDEA】IDEA常用快捷键
  • Redission分布式锁 watch dog 看门狗机制
  • 人脸识别系统架构
  • 数塔问题(蛮力算法和动态规划)
  • 启动 Redis 服务和连接到 Redis 服务器
  • 我独自升级崛起在哪下载 我独自升级电脑PC端下载教程分享