2015-04-19 34 views
0

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

<!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的第三方组件。提前致谢。

回答

0

正如你所说,你不想使用第三方资源,你必须看看几个项目。具体而言,NSURL,NSURLRequestNSURLConnectionNSURLSession(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标头。通常情况下,多部分/表单数据将完成这项工作,但总是很好地知道为什么会如此。

祝你好运。

相关问题