gpt4 book ai didi

php - 上传一个sqlite文件

转载 作者:可可西里 更新时间:2023-11-01 05:28:33 24 4
gpt4 key购买 nike

我正在使用 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";
}
?>

正在打印:

Error Domain=com.alamofire.error.serialization.response Code=-1016 "Request failed: unacceptable content-type: text/html" UserInfo=0x7b8b2bf0

mimeType 的问题吗?我还在 iOS 和 php 端使用了 application/x-sqlite3 内容类型。

最佳答案

客户端代码正在使用 file 字段名称上传,但服务器代码正在寻找 uploadedfile。您必须在两个平台上使用相同的字段名称。

mime 类型应该是固定的。因为 SQLite 文件是二进制文件,而不是文本文件,所以我建议使用 application/x-sqlite3application/octet-stream 的 mime 类型,而不是 text/htmltext/plain。但不匹配的字段名称是更令人震惊的问题。


对了,你报错信息:

Error Domain=com.alamofire.error.serialization.response Code=-1016 "Request failed: unacceptable content-type: text/html" UserInfo=0x7b8b2bf0

这通常是您的服务器页面返回 text/html 的结果,但 AFURLSessionManager 需要 JSON。

您可以更改管理器的responseSerializer:

manager.responseSerializer = [AFHTTPResponseSerializer serializer];

或者,更好的是,更改您的服务器代码以返回 JSON。

关于php - 上传一个sqlite文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27638318/

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