【发布时间】:2016-01-08 08:30:39
【问题描述】:
我想使用 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-Application-Context:应用程序:生产
内容长度: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)
【问题讨论】:
-
您可以编辑您的帖子并添加运行此程序时收到的错误消息吗?
-
@AsumuTakikawa 抱歉,我手头没有错误消息。我记得错误类似于“http/1.1 code:500, server internal error”。