【发布时间】:2020-10-19 22:31:47
【问题描述】:
我正在尝试将图像上传到我的本地主机服务器并将路径保存到数据库。我已经有一些其他代码,我在其中上传了一个新对象。是否可以使用如下所示的相同功能上传图像。我还没有找到任何关于如何在同一函数中(在同一 sql 请求中)使用其他上传来执行此操作的好的教程。 Spot 对象有一个元素图像,即UIImage,必须上传。
Swift 代码:
if let url = URL(string: "http://localhost:8080/add.php") {
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.timeoutInterval = 20.0
var dataString = "secretWord=235ghzjg35" // starting POST string with a secretWord
dataString = dataString + "&name=\(spot.name!)"
dataString = dataString + "&lat=\(spot.lat!)"
dataString = dataString + "&long=\(spot.long!)"
let dataD = dataString.data(using: .utf8)
do{
let uploadJob = URLSession.shared.uploadTask(with: request, from: dataD) { data, response, error in
if error != nil {
DispatchQueue.main.async {
print("No connection")
}
}
else {
if let unwrappedData = data {
let returnedData = NSString(data: unwrappedData, encoding: String.Encoding.utf8.rawValue)
if returnedData == "1"{
DispatchQueue.main.async {
print("Upload completed")
}
}
else {
DispatchQueue.main.async {
print(returnedData ?? "no data back'")
}
}
}
}
}
uploadJob.resume()
}
}
PHP代码:
<?php
$secret = $_POST["secretWord"];
if ("235ghzjg35" != $secret) exit;
$name = $_POST["name"];
$lat = $_POST["lat"];
$long = $_POST["long"];
//$img0 = $_FILES['img0'];
//$target0 = "spotImages/" . $name;
//$target0 = $target0 . basename($img0);
// Create connection
$con=mysqli_connect("localhost", "user", "pass", "db");
// Check connection
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
//then adding here the image
$sql = "INSERT INTO `table` (`id`, `name`, `long`, `lat`) VALUES (NULL, '". $name ."', '". $long ."', '". $lat ."');";
$result = mysqli_query($con, $sql);
echo $result;
mysqli_close($con);?>
此外,我想知道在如何使用 Swift 为我的应用程序管理数据库方面是否有更好的解决方案。我已经阅读了一些关于 Firebase 和 Realm.io 的内容。有没有人有任何经验?如果是这样,有什么优点和缺点?我应该考虑使用它而不是我的方法吗?
【问题讨论】:
-
将图像作为
String发送到您的数据库。我以前做过。