go - Golang 上传文件的 MIME 类型检查
问题描述
我正在尝试将 mime 类型的文件上传到我的服务器中。
.xlsx 和 .docx 文件 mime 类型出现在 application/zip 中。我试图解压缩文件并读取“_rels/.rels”类型的文件。我的疑问是在阅读这个特定文件时,我应该为阅读文件留下的最大大小是多少,如果目标是“xl/workbook.xml”,我可以假设它是 xlsx 类型吗?
我的代码如下
file, fileHeader, err := r.FormFile("file")
buffer := make([]byte, 512)
_, err = file.Read(buffer)
if err != nil {
fmt.Println(err)
}
contentType := http.DetectContentType(buffer)
if contentType == "application/zip" {
r, err := zip.NewReader(file, fileHeader.Size)
if err != nil {
fmt.Println(err)
}
for _, zf := range r.File {
if zf.Name == "_rels/.rels" {
fmt.Println("rels")
rc, err := zf.Open()
if err != nil {
fmt.Println("Rels errors")
}
const BufferSize = 1000
buffer := make([]byte, BufferSize)
defer rc.Close()
bytesread, err := rc.Read(buffer)
if err != nil {
if err != io.EOF {
fmt.Println(err)
}
}
fmt.Println("bytes read: ", bytesread)
fmt.Println("bytestream to string: ", string(buffer[:bytesread]))
fmt.Println(rc)
}
}
}
var arr []byte
w.Header().Set("Content-Type", "application/json")
w.Write(arr)
}
我得到的输出是
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"><Relationship Id="rId3" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties" Target="docProps/app.xml"/><Relationship Id="rId2" Type="http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties" Target="docProps/core.xml"/><Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="xl/workbook.xml"/></Relationships>
关于如何阅读 .doc 或 .xls 的任何提示?
解决方案
推荐阅读
- amazon-web-services - 如何使用/不使用 Glue Crawler 自动化 ALTER TABLE ADD PARTITIONS
- html - 在 flexbox 中每行放置 2 个项目
- javascript - Safari 上的正则表达式错误。? 前面的token是不可量化的
- r - R - 动态变量名称和嵌套循环
- python - 用于基于多个条件的迭代的 Python 程序
- c# - C# GCP auth2.0 403 不匹配重定向
- keras - HSV图像可以用于CNN训练吗
- c# - 如何将字符串从一种编码转换为另一种编码
- android - Android Studio 模拟器停止在 Mac 上工作
- python - INSERT 的 SQL 排序