共计 1342 个字符,预计需要花费 4 分钟才能阅读完成。
问题:
# favicon.ico 简介
是什么?申请如何解决?
favicon.ico 简介
-
favicon.ico
是网页上的图标文件- 名称:默认名称位 favicon.ico
- 尺寸:16×16、32×32、48×48、64×64、128×128
- 色彩: 8 位、24 位 或 32 位
-
个别说,在网页中能够通过 HTML 语句设置图标文件
- <link rel=”shortcut icon” href=”/favicon.ico” type=”image/x-icon”>
-
如果不设置,浏览器会在网站根目录中申请图标文件
- 即:被动发送 HTTP 申请
/favicon.ico
- 即:被动发送 HTTP 申请
浏览器与文件服务器的交互
-
文件浏览
- 点击列表中的文件夹 👉 进入子文件夹(展现子文件夹列表)
-
文件下载
- 点击列表中的文件 👉 下载指标文件
-
错误处理
- 向服务器发送谬误申请 👉 浏览不存在的文件夹 / 下载不存在的文件
# 文件下载
char buf[1024] = {0}; | |
int max = lseek(fd, 0, SEEK_END); | |
sprintf(head, HTTP_FORMAT, max); | |
len = TcpClient_SendRow(client, head, strlen(head)); | |
lseek(fd, 0, SEEK_SET); | |
while ((len > 0) && (len = read(fd, buf, sizeof(buf))) > 0) {ret + TcpClient_SendRow(client, buf, len); | |
} | |
ret = (ret == max); |
错误处理
static const char* ERR_FORMAT = "<!DOCTYPE html>" | |
"<html>" | |
"<head>" | |
"<meta charset=\"utf-8\">" | |
"<title>D.T.Software</title>" | |
"</head>" | |
"<body>" | |
"<h1>DT4SW Http File Server</h1>" | |
"<hr/>" | |
"<h2>OOPS!!!</h2>" | |
"<h3>Path: \'%s\'is NOT available...</h3>" | |
"</body>" | |
"</html>"; |
char *ToErrString(const char *path) | |
{ | |
char *ret = NULL; | |
if (path && (ret = malloc(strlen(ERR_FORMAT) + strlen(path) + 1))) {sprintf(ret, ERR_FORMAT, path); | |
} | |
return ret; | |
} |
响应模块入口函数
int RequestHandler(TcpClient* client, const char* req, const char* root) | |
{ | |
int ret = 0; | |
if (client && req && root) {char *ap = GetAbsPath(req, root); | |
if (ap && (access(ap, F_OK) == 0)) {if (GetEntryCount(ap) < 0) {ret = FileReqHandler(client, req, root); | |
} else {ret = DirReqHandler(client, req, root); | |
} | |
} else {ret = BadReqHandler(client, req, root); | |
} | |
free(ap); | |
} | |
return ret; | |
} |
编程试验:最终实现
源码下载地址
正文完