Swift文件上传

时间:2015-02-19 20:31:55

标签: ios iphone swift nsurlsession

我已根据uploadTaskWithRequest所需的内容跟踪Apple文档作为上传文件的参数。这对我来说似乎很直接,但我只看到请求命中服务器而没有其他内容上传。我正在使用PHP,$_FILES$_POST数组在服务器端始终为空(在OSX附带的Apache + PHP上运行)。 session变量在其他地方定义并启动。

  let url = "http://localhost/upload.php"
  let file = "image.png"
  uploadFile(url,file)

  func uploadFile(url: String, file: String) {
    let filePath = mediaDir?.URLByAppendingPathComponent(file)
    var request = NSMutableURLRequest(URL: NSURL(string: url)!)
    println(filePath,url)
    request.HTTPMethod = "POST"
    let task = session.uploadTaskWithRequest(request,
        fromFile: filePath!)

    task.resume()
  }

我在这里做错了什么?有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我不再使用PHP了,所以也许它已经改变了。如果您上传let task = session.uploadTaskWithRequest(request,fromFile: filePath!) 不创建multipart / form POST,而是创建一个其Content-Type为application / octet-stream的帖子,而content是原始文件本身。换句话说,您无法在$ _POST或$ _FILES中获取该文件。

我认为您可以获得如下文件:

$upload = file_get_contents('php://input');  

可能会过时,但它可能是一个很好的起点。