我正在尝试编写一个具有基本文件上传、下载功能的 Rest API。我能够很好地完成上传部分,但我很难从 gridfs 下载文件。有什么建议吗?

请您参考如下方法:

更新:我想我知道怎么做了。我很好奇是否有人有任何其他建议:

这是我现在的样子:

func DownloadRecord(w http.ResponseWriter, filename string) error { 
    if !fileExists(filename) { 
      return errors.New("File doesn't exist. Nothing to download") 
    } 
    session := sqlconnecter.GetMongoDBConnection() 
    fileDb := session.DB("mydatabase") 
    file, err := fileDb.GridFS("fs").Open(filename) 
    defer file.Close() 
    if err != nil { 
      return err 
    } 
    fileHeader := make([]byte, 512) 
    file.Read(fileHeader) 
    fileContentType := http.DetectContentType(fileHeader) 
    fileSize := file.Size() 
 
    w.Header().Set("Content-Disposition", "attachment; filename="+filename) 
    w.Header().Set("Content-Type", fileContentType) 
    w.Header().Set("Content-Length", strconv.FormatInt(fileSize, 10)) 
 
    file.Seek(0, 0) 
    io.Copy(w, file) 
    return err 
} 


评论关闭
IT虾米网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!