2015-04-19 36 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標頭。通常情況下,多部分/表單數據將完成這項工作,但總是很好地知道爲什麼會如此。

祝你好運。

相關問題