ios php上传文件到服务器 (如何在iOS中使用PHP上传文件到服务器?)
在iOS中使用PHP上传文件到服务器是一个常见的需求。无论是上传照片、视频还是文档,使用PHP技术可以更加高效、快速地实现文件上传。在本文中,我们将介绍如何使用iOS中的PHP技术实现文件上传功能。
一、创建PHP文件
首先,我们需要在服务器上创建一个PHP文件,该文件用于处理文件上传的功能。通常情况下,我们可以在服务器端创建一个名为“upload.php”的文件。如下是PHP代码:
“`
<?php
$target_dir = “uploads/”;//上传路径
if(!fileexists($targetdir))//如果路径不存在则创建
{
mkdir($target_dir, 0777, true);
}
$targetfile = $targetdir . basename($_FILES[“file”][“name”]);//上传文件名
if (moveuploadedfile($FILES[“file”][“tmpname”], $targetfile))//执行上传
{
echo “The file “. basename( $FILES[“file”][“name”]). ” has been uploaded.”;
}
else
{
echo “Sorry, there was an error uploading your file.”;
}
?>
“`
二、iOS中实现文件上传
其次,我们需要在iOS项目中实现文件上传功能。这里使用NSURLSession实现,如下是Swift代码:
“`
//上传文件
func uploadFile(_ filePath: String, serverUrl: String, paramName: String, successBlock: @escaping (_ result:Any) -> (), failBlock: @escaping (_ error:Error?) -> ()) {
let url = URL(string: serverUrl)!
let request = NSMutableURLRequest(url: url)
request.httpMethod = "POST"
let boundary = "Boundary-\(UUID().uuidString)"
let header = "multipart/form-data; boundary=\(boundary)"
request.addValue(header, forHTTPHeaderField: "Content-Type")
let fileData = try! Data(contentsOf: URL(fileURLWithPath: filePath))
let body = NSMutableData()
let mimeType = "application/octet-stream"
let filename = (filePath as NSString).lastPathComponent
body.append("--\(boundary)\r\n".data(using: String.Encoding.utf8)!)
body.append("Content-Disposition: form-data; name=\"\(paramName)\"; filename=\"\(filename)\"\r\n".data(using: String.Encoding.utf8)!)
body.append("Content-Type: \(mimeType)\r\n\r\n".data(using: String.Encoding.utf8)!)
body.append(fileData)
body.append("\r\n".data(using: String.Encoding.utf8)!)
body.append("--\(boundary)--\r\n".data(using: String.Encoding.utf8)!)
request.httpBody = body as Data
let config = URLSessionConfiguration.default
let session = URLSession(configuration: config)
let task = session.dataTask(with: request as URLRequest) { (data, response, error) in
if error != nil {
failBlock(error)
return
}
if let httpResponse = response as? HTTPURLResponse {
if httpResponse.statusCode == 200 {
do {
let json = try JSONSerialization.jsonObject(with: data!, options: .mutableContainers)
successBlock(json)
} catch {
successBlock("上传成功".encodeBase64()!)//成功时返回服务器的提示信息
}
} else {
failBlock(nil)
}
} else {
failBlock(nil)
}
}
task.resume()
}
“`
三、使用
在需要上传文件的地方,调用上面的函数即可实现文件上传:
let fileUrl = Bundle.main.path(forResource: "test", ofType: "jpg")!
let serverUrl = "http://example.com/upload.php"
uploadFile(fileUrl, serverUrl: serverUrl, paramName: "file", successBlock: { (result) in
print(result)
}) { (error) in
print("error: \(error)")
}
以上就是在iOS中使用PHP上传文件到服务器的方法和步骤。通过PHP开发人员编写的上传文件处理程序,在iOS开发中能够十分方便地实现文件的上传和处理。