api - 当我尝试使用 POST 下载文件到我的 api 时出现 404 错误是什么?

标签 api go download

这里的 api 应该在发布表单请求时加载文件

curl -X POST -d "url = http: //site.com/file.txt" http: // localhost: 8000 / submit

但是404就出来了,是什么原因呢? 或者如何在 API 中通过 POST 下载文件?

func downloadFile(url string) Task {
    var task Task
    resp, err := http.Get(url)
    if err != nil {
        fmt.Println("Error while downloading")
    }
    defer resp.Body.Close()
    filename := strings.Split(url, "/")[len(strings.Split(url, "/"))-1]
    fmt.Println(filename)
    out, err := os.Create(filename)
    if err != nil {
        fmt.Println("Error while downloading")
    }
    defer out.Close()
    _, err = io.Copy(out, resp.Body)
    fmt.Println("Error while downloading")
}

func submit(c *gin.Context) {
    c.Header("Content-Description", "File Transfer")
    c.Header("Content-Transfer-Encoding", "binary")
    url := c.Param("url")
    fmt.Println("url " + url)
    task := downloadFile(url)
    hashFile(task.ID)
    c.JSON(200, task.ID)
}

func main() {
    router := gin.Default()
    router.POST("/submit/:url", submit)
}

最佳答案

HTTP 状态 404 表示服务器找不到请求的 URL。鉴于您的 curl 命令,这似乎非常有意义。您似乎在请求 URL http://localhost:8000/submit,但您的应用程序只有一个路由:

router.POST("/submit/:url", submit)

此路由需要在 /submit 之后添加第二个 URL 段,例如 /submit/foo

关于api - 当我尝试使用 POST 下载文件到我的 api 时出现 404 错误是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56460217/

相关文章:

javascript - 哪里有适用于 HTML5 的所有 Javascript API 的好资源

android - 如何使用 API 21 android 创建相机预览?

go - map[string]interface{} 到带有 json 标签的结构

go - 使用指针作为映射键,无法查看是否设置了键

javascript - jQuery XML 导出或简单 JavaScript 文件下载

javascript - 如何强制文件下载 mp3 而不是打开

java - 如何正确下载多个图像(视频缩略图)

iphone - iPhone 的共享 API 按钮

JavaScript Express、 Node 和 CSVtoJSON

go - 如何在 Go 中使用 .Read 函数?