実際には、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 文字列を渡すことも可能ですか?.
私が感謝するかもしれないどんな助けでも。
-ロガナサン