我看过很多关于这个主题的帖子,但没有一个有助于解决问题。我在网络服务器上有一个 download.php 文件,用于下载存储在服务器上的图像。php 通过将任务分为两步来做到这一点。
第一步是我发送用户信息,php 返回与用户关联的图像的 ID。在第二步中,基于这些 id,我向同一个 php 页面发送另一个请求,并逐个请求特定 id 的图像。
这种方法在 html 或我的 android 代码中使用时效果很好,所以我确信 php.ini 没有问题。
当我从 ios 代码向 php 发送请求时,获取图像 ID 的第一步效果很好,但请求图像根本不起作用。didReceieveData 回调永远不会被调用。这就是我正在做的 -
- (void)downloadImages:(NSInteger)imageNo{
NSString *post = [NSString stringWithFormat:@"user=%@&download=%@&imageId=%d", userName, @"true",imageNo];
NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc]
initWithURL:[NSURL
URLWithString:@"MYWEBSERVER/download.php"]];
[request setHTTPMethod:@"POST"];
[request setValue:postLength forHTTPHeaderField:@"Content-Length"];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:postData];
currentDownMode = DOWN_IMAGE;
[[NSURLConnection alloc] initWithRequest:request delegate:self];
}
这是我在我的 php 页面中的内容 -
function download()
{
global $folder_path, $user_id, $image_table, $sql_folder_path;
$fileID = $_POST["imageId"];
$sql="SELECT fileName,filePath FROM $image_table WHERE fileId='$fileID'";
$query = mysql_query($sql) or die($sql . ' - ' . mysql_error());
$row = mysql_fetch_array($query);
$im = file_get_contents("../" . $row[1] . $row[0]);
header('content-type: image/gif');
echo $im;
}