我尝试使用GCDWebServer
上传一个大视频文件,但无法上传。小视频上传成功,大视频上传出现问题
实际上,我使用GCDWebServer
将文件从PC导入到iOS设备,并使用以下代码将这些文件写入应用程序文档路径。首先,我从文件中删除Web表单数据,然后将其写入应用程序文档路径。
let dataRequest = request as? GCDWebServerURLEncodedFormRequest
var fileData = dataRequest?.data
if let dataString = String(data: fileData!, encoding: .isoLatin1) {
let split = dataString.components(separatedBy: "\r\n\r\n")
let splitFirst = split.first?.components(separatedBy: "filename=")
let splitName = splitFirst![1].components(separatedBy: "\r\n")
fileName = splitName.first!.replacingOccurrences(of: "\"", with: "", options: NSString.CompareOptions.literal, range: nil)
fileData = split[1].data(using: .isoLatin1)
} else {
// getting nil dataString
}
现在,当我尝试将一个小的上传文件数据转换为字符串时,我得到的结果是dataString
,但如果文件大小很大,则得到dataString
nil
。例如500 MB
请给我一个合适的答案。GCDWebServer
对我来说是一个新的主题。
还有一件事GCDWebServer提到下面的功能,如果有人有关于它的想法,请让我知道。
- 使用“application/x-www-form-urlencoded”或“multipart/form-data”编码提交的Web表单的解析器(包括文件上传)
1条答案
按热度按时间af7jpaap1#
当使用GCDWebServer上传大型文件时,需要记住一些注意事项,以确保成功上传。以下是一些解决您面临的问题的建议:
GCDWebServerMultiPartFormRequest
来处理多部分表单请求。您可以使用此类直接访问和处理上载的文件数据,而无需将其转换为字符串。以下是如何使用
GCDWebServerMultiPartFormRequest
处理大文件上传的示例:通过使用
GCDWebServerMultiPartFormRequest
和GCDWebServerMultiPartFile
类,您可以直接访问文件数据,而不必将其转换为字符串,这有助于避免大型文件上传时的内存问题。请记住适当处理文件存储,并考虑iOS设备可用存储容量所施加的任何限制或约束。
此外,请确保您在物理设备上测试代码,而不仅仅是iOS模拟器,因为模拟器在处理大文件上传时可能会有不同的行为。
总的来说,使用流和文件处理技术,沿着调整服务器配置,应该可以帮助您成功地使用GCDWebServer上传和处理大型视频文件。