iOS:使用 OutputStream(url: , append:) 发送大文件(超过 3Gb)时出现问题 => 代码状态 500
iOS: Problem to send big files (more than 3Gb) with OutputStream(url: , append:) => Code Status 500
我尝试使用 OutputStream(url: payloadFileURL, append:) 函数发送大视频文件,但我有一个 代码状态 500。 (我精确地说,当我发送 1gb、2gb 时,它就像一个魅力)
完整代码如下:
private func buildPayloadFile(videoFileURL: URL, boundary: String, fileName: String, eventId: Int, contactId: Int, type: Int) throws -> URL {
let mimetype = "video/mp4"
let payloadFileURL = URL(fileURLWithPath: NSTemporaryDirectory())
.appendingPathComponent(UUID().uuidString)
guard let stream = OutputStream(url: payloadFileURL, append: false) else {
throw UploadError.unableToOpenPayload(payloadFileURL)
}
stream.open()
//define the data post parameter
stream.write("--\(boundary)\r\n")
stream.write("Content-Disposition:form-data; name=\"eventId\"\r\n\r\n")
stream.write("\(eventId)\r\n")
stream.write("--\(boundary)\r\n")
stream.write("Content-Disposition:form-data; name=\"contactId\"\r\n\r\n")
stream.write("\(contactId)\r\n")
stream.write("--\(boundary)\r\n")
stream.write("Content-Disposition:form-data; name=\"type\"\r\n\r\n")
stream.write("\(type)\r\n")
stream.write("--\(boundary)\r\n")
stream.write("Content-Disposition:form-data; name=\"file\"; filename=\"\(fileName)\"\r\n")
stream.write("Content-Type: \(mimetype)\r\n\r\n")
if stream.append(contentsOf: videoFileURL) < 0 {
throw UploadError.unableToOpenVideo(videoFileURL)
}
stream.write("\r\n")
stream.write("--\(boundary)--\r\n")
stream.close()
return payloadFileURL
}
有什么想法吗?
错误 500 表示服务器端问题。可能有几个原因:
- 服务器端配置
- 服务器磁盘 space
- 服务器实施问题
另请检查您的客户端代码:
- 内容类型
- 哑剧类型
- 设备上足够 space。由于这个大文件,在 "cache"
期间需要设备上的更多 space 存储在内存中
我尝试使用 OutputStream(url: payloadFileURL, append:) 函数发送大视频文件,但我有一个 代码状态 500。 (我精确地说,当我发送 1gb、2gb 时,它就像一个魅力)
完整代码如下:
private func buildPayloadFile(videoFileURL: URL, boundary: String, fileName: String, eventId: Int, contactId: Int, type: Int) throws -> URL {
let mimetype = "video/mp4"
let payloadFileURL = URL(fileURLWithPath: NSTemporaryDirectory())
.appendingPathComponent(UUID().uuidString)
guard let stream = OutputStream(url: payloadFileURL, append: false) else {
throw UploadError.unableToOpenPayload(payloadFileURL)
}
stream.open()
//define the data post parameter
stream.write("--\(boundary)\r\n")
stream.write("Content-Disposition:form-data; name=\"eventId\"\r\n\r\n")
stream.write("\(eventId)\r\n")
stream.write("--\(boundary)\r\n")
stream.write("Content-Disposition:form-data; name=\"contactId\"\r\n\r\n")
stream.write("\(contactId)\r\n")
stream.write("--\(boundary)\r\n")
stream.write("Content-Disposition:form-data; name=\"type\"\r\n\r\n")
stream.write("\(type)\r\n")
stream.write("--\(boundary)\r\n")
stream.write("Content-Disposition:form-data; name=\"file\"; filename=\"\(fileName)\"\r\n")
stream.write("Content-Type: \(mimetype)\r\n\r\n")
if stream.append(contentsOf: videoFileURL) < 0 {
throw UploadError.unableToOpenVideo(videoFileURL)
}
stream.write("\r\n")
stream.write("--\(boundary)--\r\n")
stream.close()
return payloadFileURL
}
有什么想法吗?
错误 500 表示服务器端问题。可能有几个原因:
- 服务器端配置
- 服务器磁盘 space
- 服务器实施问题
另请检查您的客户端代码:
- 内容类型
- 哑剧类型
- 设备上足够 space。由于这个大文件,在 "cache"