我使用.upload方法上传到我服务器上的php文件,它似乎工作(我得到200响应)
upload(.POST, Config.uploadArbeitsauftragURL, urlToFile!)
如何在PHP文件中访问此文件?
当我想使用$_FILE
时,我需要一个相应数组索引的描述符,我无法指定任何。
答案 0 :(得分: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将文件作为八位字节流发送,因此只需POST原始文件数据。我们可以从php://输入中获取此信息但我们没有获取文件名。所以hacky解决方案是只在查询字符串中发送文件名。
请记住,这不是"对"办法。但它现在是一个快速修复
答案 1 :(得分:0)
我知道,但我遇到了同样的问题。一切看起来不错,但我无法从我的服务器应用程序访问文件数据。通过使用那里描述的方法(多部分文件上传),我能够上传文件。此外,该方法允许您上传多个文件或使用请求发送其他参数。