Alamofire 通过 .POST 上传到 PHP。上传的文件在哪里?

Alamofire upload via .POST to PHP. Where is the uploaded file?

我使用 .upload 方法上传到我服务器上的一个 php 文件,它似乎有效(我收到 200 响应)

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

如何在我的 PHP 文件中访问此文件? 当我想使用 $_FILE 时,我需要相应数组索引的描述符,但我无法指定任何描述符。

我知道,但我遇到了同样的问题。一切看起来都很好,但我无法从我的服务器应用程序访问文件数据。通过使用那里描述的方法(多部分文件上传),我能够上传文件。此外,该方法允许您上传多个文件或随请求发送其他参数。

我今天在制作原型时遇到了同样的问题。我的解决方案有点老套

swift

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://input 获取它,但我们没有得到文件名。所以 hacky 解决方案是只在查询字符串中发送文件名。

请记住,这不是 "right" 方式。但现在这是一个快速修复