Как получить загруженный файл на PHP? Файл загружен приложением iOS, написанным на Swift

Вот мой быстрый код, который загружает файл из приложения.

final class UploadService {

// I'm renting a remote server and the php code is on that
private let videoUploadPath = "http://myUploadPath.php"
var uploadsSession: URLSession!
var activeUploads: [URL: Upload] = [:]

func startUpload(medium: Medium) {

guard let url = URL(string: videoUploadPath) else { return }

var request = URLRequest(url: url)
request.httpMethod = "POST"
let upload = Upload(medium: medium)
upload.task = self.uploadsSession.uploadTask(with: request, fromFile: medium.avUrlAsset.url)
upload.task?.resume()
upload.isUploading = true
activeUploads[upload.medium.avUrlAsset.url] = upload
}
}

Обратите внимание, что я должен использовать

func uploadTask(with request: URLRequest, fromFile fileURL: URL) -> URLSessionUploadTask

// Apple documentation:
Parameters
request
A URL request object that provides the URL, cache policy, request type,
and so on. The body stream and body data in this request object are ignored.

загружать видео с телефона, так как это единственный метод, который позволяет фоновую загрузку (видео обычно довольно большие, поэтому я ДОЛЖЕН сделать фоновую загрузку возможной). Однако эта функция отбрасывает все данные тела.

Вот мой код PHP, который получает загруженный файл и сохраняет его в нужном месте:

$directory = "../storage/videos/";
$destination = $directory . basename($_FILES["file"]["name"]);

if (move_uploaded_file($_FILES["file"]["tmp_name"], $destination)) {
$returnArray["status"] = "200";
$returnArray["message"] = "Upload success";
echo json_encode($returnArray);
} else {
$returnArray["status"] = "300";
$returnArray["message"] = "Upload failed" . $_FILES["file"]["error"];
echo json_encode($returnArray);
return;
}

Если честно, я знаю, что это не удастся, потому что у меня нет возможности указать тип файла и имя, которые требуются $_FILES["file"]["name"] в коде PHP.

Поэтому у меня вопрос, как указать имя файла и тип для загрузки? Так как функция
func uploadTask(with request: URLRequest, fromFile fileURL: URL) -> URLSessionUploadTask
отбрасывает все данные тела http, как я уже упоминал, возможно, создав заголовок http, который содержит тип и имя файла? ИЛИ, есть ли другой способ для PHP получить файл, который я только что загрузил? На данный момент $ _FIELS полностью пуст. Я новичок в PHP, извините, если я не сказал это достаточно ясно.

Также для Content-TypeЯ использовал multipart/form-data когда я загружаю изображение, чтобы изменить изображение профиля пользователя, я добавляю данные изображения вместе с другими данными, такими как uid, затем прикрепите эти данные как данные тела в теле http. Но теперь мне нужно загрузить один файл, потому что все данные тела в запросе будут игнорироваться в соответствии с требованием iOS. Как я могу это сделать?

Многие дни застряли в этом, пожалуйста, помогите. Большое спасибо!!

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]