gpt4 book ai didi

http - Racket 通过 http-client 或 post-impure-port 上传带有参数的 zip 文件

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:27:43 24 4
gpt4 key购买 nike

我想使用 http-conn-send 将 zip 文件上传到服务器!或后不纯端口(或后纯端口)。这是我的代码:

(define post
(lambda (url data header)
(call/input-url url
(lambda (url header)
(post-impure-port url data header))
port->string
header)))

;;; header
(define header
'("Content-Type: multipart/form-data"))

;;; some parameters
(define param `((resource_name . "google")
(version_name . "5.2")
(inner_version . "2.0")
(type . "GAME")
(sdk_id . "AndGoogle")
(for_platform . "Android")
(update_log . "test")))

(define data
(bytes-append
(string->bytes/utf-8
(alist->form-urlencoded param))
#"&file="
(file->bytes "file.zip")))

(post url data header)

但是输出是错误的,谁能告诉我哪里出了问题?

谢谢。

编辑

服务器响应

HTTP/1.1 500 内部服务器错误

服务器:Apache-Coyote/1.1

X-应用程序上下文:应用程序:生产

内容长度:0

日期:2016 年 1 月 9 日星期六 01:53:29 GMT

连接:关闭

我想知道我是否应该添加这样的代码,尽管它也不起作用:

(define CRLF "\r\n")
(define boundary "-------------------------RacketFormBoundaryf1nfLeDGcfc30oHf")

(define upload-file (file->bytes "AndGoogle.zip"))

(define data
(bytes-append
(->bytes (string-append
"--" boundary CRLF
"Content-Disposition: form-data; name=\"resource_name\"" CRLF
"AndGoogle" CRLF
"--" boundary CRLF
"Content-Disposition: form-data; name=\"version_name\"" CRLF
"5.2" CRLF
"--" boundary CRLF
"Content-Disposition: form-data; name=\"file\"; filename=\"AndGoogle.zip\"" CRLF
"Content-Type: application/zip" CRLF))
upload-file
(->bytes (string-append CRLF "--" boundary "--" CRLF))))

(define header
(list (string-append "Content-Type: multipart/form-data; boundary=" boundary)
(string-append "Content-Length: " (number->string (bytes-length data)))))

(post url data header)

最佳答案

在从 google 上的 Racket 用户组获得帮助后,我知道如何执行此操作,只需将两个 CRLF 添加到表单的子标题中即可。如下:

(define data
(bytes-append
(->bytes (string-append
"--" boundary CRLF
"Content-Disposition: form-data; name=\"resource_name\"" CRLF
CRLF
"AndGoogle" CRLF
"--" boundary CRLF
"Content-Disposition: form-data; name=\"version_name\"" CRLF
CRLF
"5.2" CRLF
"--" boundary CRLF
"Content-Disposition: form-data; name=\"file\"; filename=\"AndGoogle.zip\"" CRLF
"Content-Type: application/zip" CRLF
CRLF))
upload-file
(->bytes (string-append CRLF "--" boundary "--" CRLF))))

关于http - Racket 通过 http-client 或 post-impure-port 上传带有参数的 zip 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34672542/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com