Alamofire Libを使用して複数の画像をサーバーにアップロードしたい場合は、アップロードする画像1のみを使用します。スイフトマルチイメージをPHPサーバにアップロード
@IBAction func uploadimages(_ sender: Any) {
Alamofire.upload(
multipartFormData: { multipartFormData in
for img in self.imagesdata{
let imgdata = UIImageJPEGRepresentation(img, 1.0)
multipartFormData.append(imgdata!,withName: "image", fileName: "image.jpg", mimeType: "image/jpeg")
print("$$$$$$$$$$ : \(imgdata!)")
}
},
to: "http://localhost/maarathtest/MAPI/img_upload.php",
encodingCompletion: { encodingResult in
switch encodingResult {
case .success(let upload, _, _):
upload.responseJSON { response in
debugPrint(response)
}
case .failure(let encodingError):
print(encodingError)
}
}
)
}
と私のPHP:
私は
imagesdata
命名されUIImageの配列を返すイメージピッカーをこれが私のコードされて使用しています
<?php
$response = array();
if (empty($_FILES["image"])) {
$response['File'] = "NOFILE";;
}else {
$filename = uniqid() . ".jpg";
// If the server can move the temporary uploaded file to the server
if (move_uploaded_file($_FILES['image']['tmp_name'], "images/" . $filename)) {
$response['status'] = "Success";
$response['filepath'] = "https://serverName/MAPI/images/" . $filename;
} else{
$response['status'] = "Failure";
}
}
echo json_encode($response);
?>
私のコンソールログ:
$$$$$$$$$$ : 5849743 bytes
$$$$$$$$$$ : 3253337 bytes
[Request]: POST http://localhost/maarathtest/MAPI/img_upload.php
[Response]: <NSHTTPURLResponse: 0x600000620940> { URL: http://localhost/maarathtest/MAPI/img_upload.php } { status code: 200, headers {
Connection = "Keep-Alive";
"Content-Length" = 101;
"Content-Type" = "text/html";
Date = "Thu, 25 May 2017 10:08:08 GMT";
"Keep-Alive" = "timeout=5, max=100";
Server = "Apache/2.4.18 (Unix) OpenSSL/1.0.2h PHP/5.5.35 mod_perl/2.0.8-dev Perl/v5.16.3";
"X-Powered-By" = "PHP/5.5.35";
} }
[Data]: 101 bytes
[Result]: SUCCESS: {
filepath = "https://serverName/MAPI/images/5926ad083b770.jpg";
status = Success;
}
UPDATE:
、私は今、そのイメージをアップロードし、以下のように
Alamofire.upload(
multipartFormData: { multipartFormData in
var count = 1
for img in self.imagesdata{
let imgdata = UIImageJPEGRepresentation(img, 1.0)
multipartFormData.append(imgdata!,withName: "image\(count)", fileName: "image\(count).jpg", mimeType: "image/jpeg")
count += 1
}
},...
<?php
$response = array();
if (empty($_FILES["image1"])) {
$response['File1'] = "NOFILE";
}else {
$filename = uniqid() . ".jpg";
// If the server can move the temporary uploaded file to the server
if (move_uploaded_file($_FILES['image1']['tmp_name'], "images/" . $filename)) {
$response['status1'] = "Success";
$response['filepath1'] = "https://serverName/MAPI/images/" . $filename;
} else{
$response['status1'] = "Failure";
}
}
if (empty($_FILES["image2"])) {
$response['File2'] = "NOFILE";
}else {
$filename = uniqid() . ".jpg";
// If the server can move the temporary uploaded file to the server
if (move_uploaded_file($_FILES['image2']['tmp_name'], "images/" . $filename)) {
$response['status2'] = "Success";
$response['filepath2'] = "https://serverName/MAPI/images/" . $filename;
} else{
$response['status2'] = "Failure";
}
}
echo json_encode($response);
?>
を自分のコードを変更しましたが、私は、これはそれを行うための適切な方法だとは思いませんユーザーがアップロードしたい画像の数がわからないからです!
任意のアイデア、ヘルプ、コードの最適化は非常に高度な
これをチェックしてください - https://stackoverflow.com/a/40907477/5172413 –
私はPHPのファイル数とその常時チェックしました。 '$ response [" count "] = count($) _FILES ['image'] ['name']); ' –
各画像ファイルを別々の変数で受け取る必要があります。以下のような $ _FILES [ 'イメージ1']、 $ _FILES [ '画像2']、& $ _FILES [ '画像3'] OR あなたは画像の配列を送信すると、あなたは、コードを共有できる同じ –