« 2011年6月 | トップページ | 2011年9月 »

2011年8月

[PHP]WEBサイトから日本語ファイル名でダウンロード

日本語のファイル名のついたPDFをダウンロードするのに
普通にサーバに日本語ファイル名.pdfを置いて、HTMLにリンク貼って
とかやってたら

  • 「http://XXXXXX/日本語ファイル名.pdf」をブラウザで指定すると、404エラー
  • URLエンコードしてファイルを指定するとダウンロードはできるけど、ファイル名がエンコードされた名前のまま
  • 半角英数字ファイルならおk

てことになった。
これを回避するのに、以下のようなHTTPヘッダを送信するスクリプトを使った。

<?php
    header('Content-type: application/pdf');    // mimeタイプ
    header('Content-Disposition: attachment; filename=日本語ファイル名.pdf');
    readfile('日本語ファイル名.pdf');   // 実際のファイルを読み込んで標準出力
?>

WEBページから何らかのファイルをダウンロードするときに
スクリプトを通してダウンロードさせてるところもよく見かけていたので
「これはダウンロードのログを取ったりしてるんだろう」と思っていた。
まあきっとそういう用途もあるんだろうけども。

[PHP]PHPからPerlを引数つきで実行する

PHPソース(test.php)

   <?php

        $str = "./test.cgi prm1";
        exec($str, $output);

    ?>

Perlソース(./test.cgi)

    #!/usr/bin/perl

    use strict;

    open(OUT, ">./test.txt");
    print OUT $ARGV[0];
    close(OUT);

test.phpとtest.cgiを同列に置いて、test.phpを実行すると
「prm1」が書きこまれたtest.txtが生成される。

[PHP]ファイルアップロード時の設定

ファイルアップロードの仕組みをいれたのに動かないってときは
ファイルサイズの設定が間違っていることが多々ある&設定してもすぐ忘れる
のでメモ。

【動作環境】Linux Apache

以下の項目の設定をアップロードするファイルより大きい値に変更する必要がある
php.conf (/etc/httpd/conf.d)

  • LimitRequestBody
    comment outもできるみたい。した場合は完全にphp.iniに依存。

php.ini (/etc)

  • memory_limit
  • post_max_size
  • upload_max_filesize

上記を変更したときはapacheを再起動(httpd restart)する必要あり。

« 2011年6月 | トップページ | 2011年9月 »

最近のトラックバック

2017年8月
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    
無料ブログはココログ