我使用AFNetworking嘗試上傳文件:上傳源碼文件
-(void)uploadFile{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *filePath = [documentsDirectory stringByAppendingPathComponent:@"data.sqlite"];
NSURL *filePathURL = [NSURL fileURLWithPath:filePath];
NSMutableURLRequest *request = [[AFHTTPRequestSerializer serializer] multipartFormRequestWithMethod:@"POST" URLString:@"http://localhost:8888/myApp/upload.php" parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
[formData appendPartWithFileURL:filePathURL name:@"file" fileName:@"data.sqlite" mimeType:@"text/html" error:nil];
} error:nil];
AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]];
NSProgress *progress = nil;
NSURLSessionUploadTask *uploadTask = [manager uploadTaskWithStreamedRequest:request progress:&progress completionHandler:^(NSURLResponse *response, id responseObject, NSError *error) {
if (error) {
NSLog(@"Error: %@", error);
} else {
NSLog(@"Success: %@ %@", response, responseObject);
}
}];
[uploadTask resume];
}
而這個php文件upload.php
:
<?php
$uploaddir = 'uploads/';
$file = basename($_FILES['uploadedfile']['name']);
$uploadfile = $uploaddir . $file;
echo "file=".$file;
if (move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $uploadfile)) {
echo $file;
}
else {
echo "error";
}
?>
這是印刷:
誤差區域= com.alamofire.error.serialization.response代碼= -1016 「請求失敗:不可接受的內容類型:文本/ HTML」 UserInfo = 0x7b8b2bf0
問題來自mimeType
?我還在iOS和PHP兩側使用了application/x-sqlite3
內容類型。
您在上傳文件時需要一個有效的加密類型。 –
@ Fred-ii-在我的情況下,什麼可能是「有效的」? – androniennn
我沒注意到你在使用'但是AFMultipartFormData'了'文/ html'是困擾我的一部分。通常,多部分的二手什麼,但你的情況,我想嘗試用'文本替換'文/ html'/plain'嘗試,看看它說。 –