实际上我正在使用 ASIHTTPRequest 库从我的 ios 应用程序下载文件。我想在下载文件时通过 php 标头响应传递国际字符(它是一个文件名)。基本上是在构建文件下载标头响应时创建名为“ filename-display ”的新自定义标头。
这是我的PHP代码:
<?php
$dir = 'c:\좋은 아침.pdf';
$filename_display = '좋은 아침.pdf';
if (file_exists($dir)) {
header("HTTP/1.1 200");
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($dir));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('filename-display:' . $filename_display);
header('Content-Length:' . filesize($dir));
ob_clean();
flush();
readfile($dir);
exit;
}
else {
header("HTTP/1.1 404 file not found");
echo 'file_not_exists';
exit(0);
}
?>
客户端代码 ASIHTTPRequest 库委托调用:
#pragma mark
#pragma ASIHTTPREQUEST delegate methods
-(void)requestStarted:(ASIHTTPRequest *)request{
NSLog(@"\n file download start");
}
-(void)updateUploadProgress:(ASIHTTPRequest*)request
{
[request updateUploadProgress];
}
- (void)requestFailed:(ASIHTTPRequest *)request {
//handle it
}
- (void)requestFinished:(ASIHTTPRequest *)request {
NSDictionary *responseHeaders = [request responseHeaders];
NSLog(@"\nresponse header dict = %@", responseHeaders);
NSLog(@"\nfile name: %@", [responseHeaders objectForKey:@"filename-display"]);
}
我的 ios 应用程序上的输出:
文件名:?????????.pdf 而不是显示在 php 标头端配置的实际文件名。
让我知道我可以在 php 端使用什么编码?也可以通过标头响应传递 xml 字符串?
我可能会感激的任何帮助。
-loganathan