首页 > 解决方案 > 节点快速设置以接收使用 iOS Swift/Objective-C 协议发送的文件 uploadTaskWithRequest:fromFile:completionHandler:

问题描述

我正在努力使用 Node Express 中间件设置来接收使用 iOS NSURLSessionUploadTask 方法 uploadTaskWithRequest:fromFile:completionHandler 上传的文件:

iOs 代码看起来像这样并且完美运行,因为我从服务器获得了 200 状态响应:

    NSURLSessionUploadTask *uploadtask = [[NSURLSession sharedSession] uploadTaskWithRequest:serverURLrequest fromFile:localFileURL completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
        NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response;
        NSInteger status = [httpResponse statusCode];
        ... etc
    }];

然而,在 Express 中接收到的 req 没有​​任何 req.file 并且 req.body 是空的。所有在线 Express 示例都采用通过创建模仿表单提交的标题来伪造多部分表单提交的方法,然后他们将文件数据的字符串表示粘贴到边界字符串之间的正文中。然后,这些示例使用 iOS 代码“uploadTaskWithRequest: fromData ”将所有这些放在 req.body 中 - 然后在 Express 应用程序中,像 Multer 这样的中间件被用来拆开这个结构并生成一个文件。

我不想使用 uploadTaskWithRequest:fromData 因为许多文件都很大并且可能超过 POST 正文大小限制。然而,关于 uploadTaskWithRequest:fromFile 的 iOS 文档没有说明 HTTP POST 的构造方式以及文件在 POST 请求中“去往”的位置。

请任何了解 uploadTaskWithRequest:fromFile 和 Node Express 的人解释如何使用 uploadTaskWithRequest: fromFile从 iOS 接收上传的文件。谢谢。

同样,我必须强调没有带有表单输入的 HTML,并且我不想将文件内容作为 POST 正文中的数据作为模拟的多部分表单发送。我想简单地将通过 uploadTaskWithRequest:fromFile 上传的文件接收到 Express 中,以及要设置的 POST 头文件(上传的文件是文本文件)。谢谢

标签: iosnode.jsswiftobjective-cexpress

解决方案


推荐阅读