2015-06-03 93 views
0

我用.upload方法上傳到PHP文件我的服務器上,它似乎工作(我得到一個200響應)Alamofire通過.POST上傳到PHP。上傳的文件在哪裏?

upload(.POST, Config.uploadArbeitsauftragURL, urlToFile!) 

如何在我的PHP文件訪問此文件? 當我想要使用$_FILE,我需要一個描述符爲相應的數組索引,我無法指定任何。

+0

你可能想看看這裏: http://stackoverflow.com/questions/26121827/uploading-file-with-parameters-using-alamofire – ncerezo

+0

我不想要發送額外的參數。我只想要一個文件上傳並訪問它。 – gutenmorgenuhu

回答

2

我在今天遇到同樣的問題,同時做了一些原型設計。我略哈克解決方案

迅速

let fileName = "myImage.png" 

let documentsPath = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as! String 
let filePath = documentsPath.stringByAppendingPathComponent(fileName) 
let fileURL = NSURL(fileURLWithPath: filePath)! 

Alamofire.upload(.POST, "http://example.com/upload.php?fileName=\(fileName)", fileURL) 

upload.php的

// get the file data 
$fileData = file_get_contents('php://input'); 
// sanitize filename 
$fileName = preg_replace("([^\w\s\d\-_~,;:\[\]\(\).])", '', $_GET["fileName"]); 
// save to disk 
file_put_contents($fileName, $fileData); 

解釋

看來Alamofire發送文件的八位字節流,所以才發佈原始文件數據。我們可以從php://中獲取這個,但是我們沒有得到文件名。所以hacky的解決方案是隻發送查詢字符串中的文件名。

請記住,這不是「正確」的方式。但它是一個快速解決方案,現在

0

我知道,但我有同樣的問題。一切看起來不錯,但我無法從我的服務器應用程序訪問文件數據。通過使用這裏描述的方法(多部分文件上傳),我能夠上傳文件。此外,該方法允許您上傳多個文件或發送其他參數與請求。

+0

這確實提供了一個答案。請注意,我的第一個答案已自動轉換爲評論,但我無法再發表評論,所以我需要添加一個新答案。但這與我的第一條評論有關。我的第一個評論指出了一個解決方案,由於它討論了發送參數而忽略了,但它實際上是解決問題的方法。我知道這是因爲我的問題與gutenmorgenuhu一樣,我也不需要參數,但是上傳文件作爲多部分請求是上傳工作的唯一方法。 – ncerezo