gpt4 book ai didi

使用 Alamofire 从 iOS 上传 PHP

转载 作者:IT王子 更新时间:2023-10-29 05:43:10 26 4
gpt4 key购买 nike

我正在尝试将 3 张图像从 iOS 上传到服务器到我的 PHP 服务。由于某种原因,文件夹在发布后仍然是空的,但其余数据会通过并持久保存到 mysql 中。

我的 iOS 代码:

Alamofire.upload(.POST, urlString, multipartFormData: {
multipartFormData in

if (firstPhoto != nil) {
if let firstImageData = UIImageJPEGRepresentation(firstImage!, 0.6) {
print("uploading image");
multipartFormData.appendBodyPart(data: firstImageData, name: "firstImage", fileName: "firstImage.png", mimeType: "image/png")
}
}

if (secondPhoto != nil) {
if let secondImageData = UIImageJPEGRepresentation(secondImage!, 0.6) {
print("uploading image");
multipartFormData.appendBodyPart(data: secondImageData, name: "secondImage", fileName: "secondImage.png", mimeType: "image/png")
}
}

if (thirdPhoto != nil) {
if let thirdImageData = UIImageJPEGRepresentation(thirdImage!, 0.6) {
print("uploading image");
multipartFormData.appendBodyPart(data: thirdImageData, name: "thirdImage", fileName: "thirdImage.png", mimeType: "image/png")
}
}


if let imageData = UIImageJPEGRepresentation(firstImage!, 0.6) {
print("uploading image");
multipartFormData.appendBodyPart(data: imageData, name: "image", fileName: "file.png", mimeType: "image/png")
}

if let imageData = UIImageJPEGRepresentation(firstImage!, 0.6) {
print("uploading image");
multipartFormData.appendBodyPart(data: imageData, name: "image", fileName: "file.png", mimeType: "image/png")
}


for (key, value) in parameters {
multipartFormData.appendBodyPart(data: value.dataUsingEncoding(NSUTF8StringEncoding)!, name: key)
}

}, encodingCompletion: {
encodingResult in

switch encodingResult {
case .Success(let upload, _, _):
print("Запрос отправлен")
upload.responseJSON { response in
print(response.request) // original URL request
print(response.response) // URL response
print(response.data) // server data
print(response.result) // result of response serialization

if let JSON = response.result.value {
print("JSON: \(JSON)")
}
completion(response.result.value)
}

case .Failure(let encodingError):
print(encodingError)
completion(nil)
}
})

}

在我的 PHP 上,我不确定我是否遗漏了这里的任何东西:

 <?php

require_once 'Functions/common_functions.php';
require_once 'Functions/engine.php';
require_once 'Functions/json.php';
require_once 'Functions/check_token.php';

if (count($_REQUEST) == 6) {
foreach($_REQUEST as $k => $v) {
if (strlen($k) > 0 && strlen($v) > 0) {
$_REQUEST[$mysqli->real_escape_string($k)] = $mysqli->real_escape_string($v);
} else {
die(errorJSON("Empty parameter", "666"));
}
}

$userID = checkAccessToken($_REQUEST['access_token'], $mysqli);

if ($userID == 0) {
die(errorJSON("Incorrect access token", "666"));
}

$mysqli->query('INSERT INTO Book (title, authorID, detail, price, categoryID, conditionText) VALUES ("'.$_REQUEST['title'].'", "'.$userID.'", "'.$_REQUEST['detail'].'", "'.$_REQUEST['price'].'", "'.$_REQUEST['categoryID'].'", "'.$_REQUEST['condition'].'")');

$insertID = $mysqli->insert_id;

if ($insertID > 0) {
savePhotos($mysqli, $insertID);
$message = book($insertID, $userID, $mysqli);
die(successJSON($message));
} else {
die(errorJSON("Failed insert book in database", "666"));
}
} else {
die(errorJSON("Incorrect count of parameter" . count($REQUEST) . count($_POST), "666"));
}

function savePhotos($mysqli, $bookID) {
if(!is_dir('/home/thebakpa/resources/book_photos/')) {
mkdir('/home/thebakpa/resources/book_photos/', 0777, true);
}
try {
$uploaddir = '/home/thebakpa/resources/book_photos/';
$file = $_FILES['userfile']['photo1'];

if ($file != 0) {
$uploadfile = $uploaddir . $file;

$name = "photo1-".$bookID;
$photoPath = '/home/thebakpa/resources/book_photos/'.$name.'.jpg';

$mysqli->query('UPDATE Book SET photo1='.$photoPath.' WHERE bookID='.$bookID.'');
move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile);
}

$file = $_FILES['userfile']['photo2'];

if ($file != 0) {
$uploadfile = $uploaddir . $file;

$name = "photo2-".$bookID;
$photoPath = '/home/thebakpa/resources/book_photos/'.$name.'.jpg';

$mysqli->query('UPDATE Book SET photo1='.$photoPath.' WHERE bookID='.$bookID.'');
move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile);
}

$file = $_FILES['userfile']['photo3'];

if ($file != 0) {
$uploadfile = $uploaddir . $file;

$name = "photo3-".$bookID;
$photoPath = '/home/thebakpa/resources/book_photos/'.$name.'.jpg';

$mysqli->query('UPDATE Book SET photo1='.$photoPath.' WHERE bookID='.$bookID.'');
move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile);
}
} catch(Exception $ex){
echo "ERROR:".$ex->GetMessage()."\n";
exit(1);
}
}
?>

最佳答案

问题出在 PHP 源代码的 savePhotos 函数中。还有一些用 iOS 代码编写的额外代码。我删除了额外的代码。尝试一次。

这是更新的 iOS 代码

Alamofire.upload(.POST, urlString, multipartFormData: {
multipartFormData in

if (firstPhoto != nil) {
if let firstImageData = UIImagePNGRepresentation(firstImage!, 0.6) {
print("uploading image");
multipartFormData.appendBodyPart(data: firstImageData, name: "firstImage", fileName: "firstImage.png", mimeType: "image/png")
}
}

if (secondPhoto != nil) {
if let secondImageData = UIImagePNGRepresentation(secondImage!, 0.6) {
print("uploading image");
multipartFormData.appendBodyPart(data: secondImageData, name: "secondImage", fileName: "secondImage.png", mimeType: "image/png")
}
}

if (thirdPhoto != nil) {
if let thirdImageData = UIImagePNGRepresentation(thirdImage!, 0.6) {
print("uploading image");
multipartFormData.appendBodyPart(data: thirdImageData, name: "thirdImage", fileName: "thirdImage.png", mimeType: "image/png")
}
}

for (key, value) in parameters {
multipartFormData.appendBodyPart(data: value.dataUsingEncoding(NSUTF8StringEncoding)!, name: key)
}

}, encodingCompletion: {
encodingResult in

switch encodingResult {
case .Success(let upload, _, _):
print("Запрос отправлен")
upload.responseJSON { response in
print(response.request) // original URL request
print(response.response) // URL response
print(response.data) // server data
print(response.result) // result of response serialization

if let JSON = response.result.value {
print("JSON: \(JSON)")
}
completion(response.result.value)
}

case .Failure(let encodingError):
print(encodingError)
completion(nil)
}
})

}

这是PHP代码

function savePhotos($mysqli, $bookID) {
$basePath = '/home/thebakpa/resources/book_photos/'
if(!is_dir($basePath)) {
mkdir($basePath, 0777, true);
}
try {
$file1 = $_FILES['firstImage'];

if (is_uploaded_file($file1['tmp_name'])) {
$photoPath = $basePath.'photo1-'.$bookID.'.jpg';

if (move_uploaded_file($file1['tmp_name'], $photoPath)) {
$mysqli->query('UPDATE Book SET photo1='.$photoPath.' WHERE bookID='.$bookID.'');
}
}

$file2 = $_FILES['secondImage'];

if (is_uploaded_file($file2['tmp_name'])) {
$photoPath = $basePath.'photo2-'.$bookID.'.jpg';

if (move_uploaded_file($file2['tmp_name'], $photoPath)) {
$mysqli->query('UPDATE Book SET photo2='.$photoPath.' WHERE bookID='.$bookID.'');
}
}

$file3 = $_FILES['thirdImage'];

if (is_uploaded_file($file3['tmp_name'])) {
$photoPath = $basePath.'photo3-'.$bookID.'.jpg';

if (move_uploaded_file($file3['tmp_name'], $photoPath)) {
$mysqli->query('UPDATE Book SET photo3='.$photoPath.' WHERE bookID='.$bookID.'');
}
}
} catch(Exception $ex){
echo "ERROR:".$ex->GetMessage()."\n";
exit(1);
}
}

关于使用 Alamofire 从 iOS 上传 PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39261892/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com