在iOS開發中,上傳文件到服務器是必不可少的一個功能。而php作為服務器端的腳本語言,具有處理表單數據等任務的能力,成為了很多開發者上傳文件的首選。接下來,我們就來詳細了解一下在iOS中如何上傳文件到php服務器。
一、基本流程
上傳文件到php服務器,需要完成以下幾個步驟:
1. 獲取要上傳的文件路徑。
2. 將文件轉換為NSData類型。
3. 將NSData類型的文件上傳到服務器。
4. 在php腳本中處理文件,最終將其保存到服務器。
二、獲取文件路徑
在iOS中,可以通過UIImagePickerController選擇圖片或視頻,我們需要將其保存在本地相冊中,然后再獲取到路徑。代碼如下:
NSString *path = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"png"];
三、轉換為NSData類型
獲取到文件路徑后,需要將其轉換為NSData類型。代碼如下:NSData *data = [NSData dataWithContentsOfFile:path];
四、上傳文件
在上傳文件之前,需要設置請求頭、請求體等信息。其中,請求頭中包含了上傳文件的文件名、MIME類型等信息;請求體中則包含了上傳的文件數據。代碼如下://1.創建URL對象
NSURL *url = [NSURL URLWithString:@"http://www.xxx.com/upload.php"];
//2.創建請求對象
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
//3.設置請求頭
NSString *boundary = @"xxx"; //分隔符
NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@", boundary];
[request setValue:contentType forHTTPHeaderField:@"Content-Type"];
//4.設置請求體
NSMutableData *body = [NSMutableData data];
//4.1 文件數據
[body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"file\"; filename=\"%@\"\r\n", @"test.png"] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithFormat:@"Content-Type: image/png\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:data];
[body appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
//4.2 其他參數
[body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"username\"\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithFormat:@"%@", @"test"] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
//5.設置請求方法為POST
[request setHTTPMethod:@"POST"];
[request setHTTPBody:body];
//6.創建NSURLSessionDataTask對象,并執行上傳任務
NSURLSessionDataTask *task = [[NSURLSession sharedSession] dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
//處理上傳結果
}];
[task resume];
五、處理上傳文件
上傳文件成功后,需要在php腳本中對其進行處理。代碼如下:$file = $_FILES["file"];
$filename = $file["name"]; //文件名
$filetype = $file["type"]; //文件類型
$filesize = $file["size"]; //文件大小
$tmp_name = $file["tmp_name"]; //臨時文件名
//將臨時文件移動到指定目錄
move_uploaded_file($tmp_name, "./upload/" . $filename);
//返回上傳結果
echo "上傳成功";
六、總結
以上就是在iOS中上傳文件到php服務器的基本流程,需要注意的是,上傳文件前需要注意請求頭、請求體等信息,上傳成功后還需要在php腳本中對其進行處理。掌握這個技能,對于進行文件上傳的開發項目將會非常有幫助。上一篇css中將p行置頂
下一篇css中字體粗細控制