gpt4 book ai didi

php - 使用纯 Swift、PHP 代码将视频上传到服务器

转载 作者:行者123 更新时间:2023-11-30 12:22:11 25 4
gpt4 key购买 nike

我正在尝试将视频上传到 Godaddy 服务器使用 Swift 和 PHP。我可以将“2 秒”视频发送到文件管理器,但如果时间超过,就会失败。

    // This function combining the unquie ID and the string -VIDEO.mov to make a file name for the  body.appendString in cresteBodyWithPramsVideo function.
func videoID () -> String{
let unquieID = theDictionary.value(forKey: "unquieID") as! String
let filename = "-VIDEO.mov"
let filename2 = "\(unquieID)" + "\(filename)"
return filename2
}



func createBodyWithParamsVideo(_ parameters: [String: String]?, filePathKey: String?, imageDataKey: Data, boundary: String) -> Data {

let body = NSMutableData();

if parameters != nil {
for (key, value) in parameters! {
body.appendString(string: "--\(boundary)\r\n")
body.appendString(string: "Content-Disposition: form-data; name=\"\(key)\"\r\n\r\n")
body.appendString(string: "\(value)\r\n")
}
}


let mimetype = "video/mov"

body.appendString(string: "--\(boundary)\r\n")
body.appendString(string: "Content-Disposition: form-data; name=\"\(filePathKey!)\"; filename=\"\(videoID())\"\r\n")
body.appendString(string: "Content-Type: \(mimetype)\r\n\r\n")
body.append(imageDataKey)
body.appendString(string: "\r\n")
body.appendString(string: "--\(boundary)--\r\n")

return body as Data

}




func uploadVideo (){

let unquieID = theDictionary.value(forKey: "unquieID") as! String

// url path to php file
let url = URL(string: "http://www.myWebSite.com/Video.php")!

// declare request to this file
var request = URLRequest(url: url)

// declare method
request.httpMethod = "POST"

// param to be sent in body of request
let param = ["id" : unquieID]

// body
let boundary = "Boundary-\(UUID().uuidString)"
request.setValue("multipart/form-data; boundary=\(boundary)", forHTTPHeaderField: "Content-Type")

// Issign video to videoData var
let videoData = theDictionary.value(forKey: "theVideo") as! NSData

// ... body
request.httpBody = createBodyWithParamsVideo(param, filePathKey: "file", imageDataKey: videoData as Data, boundary: boundary)

// launch session
URLSession.shared.dataTask(with: request) { data, response, error in
if let response = response {
}

// get main queue to communicate back to user
DispatchQueue.main.async(execute: {


if error == nil {

do {
// json containes $returnArray from php
let json = try JSONSerialization.jsonObject(with: data!, options: .allowFragments) as? NSDictionary
print(data!)
print(json!)

// declare new parseJSON to store json
guard let parseJSON = json else {
print("Error while parsing")

return
}

// get id from $returnArray["id"] - parseJSON["id"]
let id = parseJSON["id"]

// successfully uploaded
if id != nil {
UserDefaults.standard.set(parseJSON, forKey: "parseJSON")
// unquieID = UserDefaults.standard.value(forKey: "parseJSON") as? NSDictionary

// did not give back "id" value from server
} else {
//Do somthing
// get main queue to communicate back to user
// DispatchQueue.main.async(execute: {
// let message = parseJSON["message"] as! String
// appDelegate.infoView(message: message, color: colorSmoothRed)
// })

}

// error while jsoning
} catch {

// get main queue to communicate back to user
// DispatchQueue.main.async(execute: {
//// let message = error as! String

// appDelegate.infoView(message: message, color: colorSmoothRed)
// })
// return
}


// error with php
} else {

// get main queue to communicate back to user
// DispatchQueue.main.async(execute: {
//// let message = error!.localizedDescription
print("message")
// appDelegate.infoView(message: message, color: colorSmoothRed)
// })
// return
}


})

}.resume()

}

//Creating protocol of appending string to var of type data
extension NSMutableData {
func appendString(string : String) {
let data = string.data(using: String.Encoding.utf8, allowLossyConversion: true)
append(data!)
}
}

PHP

<?php


//STEP 1. Check passed data to this php file
if (empty($_REQUEST['id'])) {
$returnArray["massage"] = "Missing required information";
return;
}


// Pass POST via htmlencryot and assign to $id
$id = htmlentities($_REQUEST['id']);



//STEP 2. Folder for uploaded Video.
$folder = "VBCVideo/";



//STEP 3. Move uploaded file
$folder = $folder . basename($_FILES["file"]["name"]);

if (move_uploaded_file($_FILES["file"]["tmp_name"], $folder)) {
$returnArray["status"] = "200";
$returnArray["massage"] = "The Video file has been uploaded";
} else {
$returnArray["status"] = "300";
$returnArray["massage"] = "Error while uploading the Video";
}


// STEP 8. Feedback array to app user
echo json_encode($returnArray);

?>

现在 Godaddy PHP.ini upload_max_filesize 已更正“请参阅下面的评论”,问题大致相同。我现在可以上传一个长达 12 秒的文件,任何更长的文件都不会上传。我该去哪里?

最佳答案

我必须将 PHP.ini 文件添加到 public_html 下的 Godaddy FileDirector。转到“+文件”创建一个新文件并将其命名为“php.ini”

将这些行添加到文件中并保存。

最大执行时间=120;

upload_max 文件大小 = 60M;

post_max_size = 70M;

关于php - 使用纯 Swift、PHP 代码将视频上传到服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44664877/

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