我是vapor的初学者,我选择vapor 3-rc作为开始,因为它似乎打破了vapor 2的变化。不幸的是,目前还没有完整的文档。
我目前正在尝试将一个简单的txt文件从Postman上传到我的Vapor 3本地服务器。
这是我的路线
let uploadController = FileUploadController()
router.post("uploadtxt", use: uploadController.uploadTXT)
和我的控制器
final class FileUploadController {
func uploadTXT(_ req: Request) throws -> Future<String> {
return try req.content.decode(MultipartForm.self).map(to: String.self, { form in
let file = try form.getFile(named: "txtfile")
return file.filename ?? "no-file"
})
}
}
首先,通过执行邮递员请求,服务器返回:
{"error":true,"reason":"There is no configured decoder for multipart\/form-data; boundary=...}
通过研究源代码和关于此的有限文档,我似乎应该声明一个解码器来支持多部分传入请求。
所以我做到了:
var contentConfig = ContentConfig.default()
let decoder = FormURLDecoder()
contentConfig.use(decoder: decoder, for: .multipart)
services.register(contentConfig)
我使用FormURLDecoder,因为它似乎是最符合我需求的类,实现了BodyDecoder
现在它将循环到func decode
我在Vapor slack结束了,这是一个查找信息的好地方
解决方案非常简单。与其使用
req.content.decode(MultipartForm.self)
,不如使用
MultipartForm.decode(from: req)
(...已删除的代码示例)
编辑:
AS@axello说,MultipartForm
不再存在。我现在使用req.content.decode(...)
方法来解析多部分数据。这个想法是创建一个反映您的超文本标记语言表单输入的对象。Coable将神奇地为您将数据映射到对象中。
例如,使用此表单:
<form method="POST" action="upload" enctype="multipart/form-data" class="inputForm">
<input type="name" name="filename">
<input type="file" name="filedata">
<input type="submit" name="GO" value="Send" class="send">
</form>
我创建了这个小结构
fileprivate struct MyFile: Content {
var filename: String
var filedata: Data
}
在我的控制器中:
func uploadTXT(_ req: Request) throws -> Future<String> {
return try req.content.decode(MyFile.self).map(to: String.self, { myFile in
let filename = myFile.filename // this is the first input
// ... and the second one:
guard let fileContent = String(data: myFile.filedata, encoding: .utf8) else {
throw Abort(.badRequest, reason: "Unreadable CSV file")
}
print(fileContent)
return filename
})
}
我正在传递多部分文件与其他用户信息。无法将类型的属性值转换为属性嵌套异常为 下面的代码我已经试过了 控制器类 @RequestMapping(value=RestMappingURLS.user.saveUser,headers={“Content-Type=Multipart/Mixed”,“Content-Type=Multipart/Form-Data”})public RestRespon
这其实不是一个问题,然而,我想在这里分享一些我的工作代码,供您需要时参考。 正如我们所知,从API22中不推荐使用,并且从API23开始被删除。目前,我们无法在Android Developer上访问HttpEntity引用(404)。因此,下面是使用Volley而不使用HttpEntity的POST多部分请求的工作示例代码。通过测试,它正在工作。当然,该代码可能只是一个发布两个已有的可绘制文件的
问题内容: 我在用Java应用程序服务器处理multipart / form-data请求时非常困难。从我发现的情况来看,servlet 3.0规范提供了诸如HttpServletRequest.getParts()之类的方法,这对于处理上传到我的servlet的表单数据是理想的。 但是,此方法是3.0 Servlet规范的一部分,并且我的应用程序服务器(Tomcat 6)尚不支持此方法。即使具有
我上传到S3使用以下代码: 我无法了解boto内部如何处理分段上传的任何信息。我对同样的事情有几个问题,让我们假设我有2.5 MB的文件: 然后文件将分3部分上传,如1,1和.5 MB? 所有3个部分将并行上传还是按顺序上传? 在java的aws库中,我们有转移管理器,在博托中有什么类似的东西吗? 此代码是否足以用于多段上传?因为我遇到了一些复杂的代码示例 任何帮助都将不胜感激。
您好,我正在独立应用程序上使用java中的vertx读取web应用程序中的端口。我想从表单中获取post数据。我的web应用程序有一个带有post方法的表单,我希望阅读该表单。我的逻辑是 > 创建垂直线 创建http服务器 创建处理程序请求(它不接受代码中的所有参数) 我不知道我错过了什么,我是vertx的新手。 出于某种原因,我不能在这里发布代码。 我的代码:https://pastebin.c
我正在使用vapor为我的应用程序托管图像。我有以下代码来接收图像并打印它。 我怎么能发送一个多部分的请求,只是使用swft?。这是我正在使用的当前帖子请求代码。