iOS Swift - 如何使用POST方法将视频文件上传到PHP脚本?

时间:2015-04-19 20:28:38

标签: ios iphone swift video file-upload

视频文件数据的类型为NSData,我希望能够将其发布到PHP服务器。我知道如何使用典型的参数,如字符串,整数,base64编码的字符串等。我只是不确定如何发布视频数据。我希望Swift代码能够模仿以下HTML:

<!DOCTYPE html>
<head>
<title></title>
</head>
<body>
<form action="videoupload.php" method="post" enctype="multipart/form-data">
<label for="file"><span>Filename:</span></label>
<input type="file" name="file" id="file" /> 
<br />
<input type="submit" name="submit" value="Submit" />
</form>
</body>
</html>

我已经在服务器上运行了PHP代码。任何人都可以告诉我如何获得与上面发布的HTML相同的结果,但是使用Swift for iOS?另外,我不想使用Github的第三方组件。提前致谢。

1 个答案:

答案 0 :(得分:0)

正如您所说,您不想使用第三方资源,您必须查看几个项目。具体而言,NSURLNSURLRequest以及NSURLConnectionNSURLSession(NSURLSession是较新的API,建议Apple使用)。然后它到达有趣的部分。您将不得不研究如何构建一个HTTP主体,它将包含您的所有数据和信息。例如,这是我的一个项目的片段,它将图像和名称发送到PHP脚本,它不应该很难适应您的需求。

    body.appendData(NSString(format: "--%@\r\n", boundary).dataUsingEncoding(NSUTF8StringEncoding)!)
    body.appendData(NSString(format: "Content-Disposition: form-data; name=\"image-name\"\r\n\r\n").dataUsingEncoding(NSUTF8StringEncoding)!)
    body.appendData("\(user).png".dataUsingEncoding(NSUTF8StringEncoding)!)

    body.appendData(NSString(format: "\r\n--%@\r\n", boundary).dataUsingEncoding(NSUTF8StringEncoding)!)
    body.appendData(NSString(format: "Content-Type: image/png\r\n").dataUsingEncoding(NSUTF8StringEncoding)!)
    body.appendData(NSString(format: "Content-Transfer-Encoding: application/octet-stream\r\n").dataUsingEncoding(NSUTF8StringEncoding)!)
    body.appendData(NSString(format: "Content-Disposition: form-data; name=\"image\"; filename=\"\(user).png\"\r\n\r\n").dataUsingEncoding(NSUTF8StringEncoding)!)
    body.appendData(imageData)
    body.appendData(NSString(format: "\r\n--%@\r\n", boundary).dataUsingEncoding(NSUTF8StringEncoding)!)

最后,您需要查看Content-Type HTTP标头。通常,多部分/表格数据可以完成这项工作,但了解其原因总是很好。

祝你好运。