745645 ランダム
 ホーム | 日記 | プロフィール 【フォローする】 【ログイン】

読書と技術となんか色々のログ

読書と技術となんか色々のログ

【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! --/--
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x

PR

カレンダー

カテゴリ

2009年06月10日
XML
カテゴリ:[JS] Dojo Toolkit
demoにあるFile Uploaderが動かなかったので調べてみました。

このページにあるdemoは動いていて、アップロードした画像がサムネイル表示されています。

demoプログラムの環境構築
このページから以下のファイルをダウンロードします。

dojo-release-1.3.1-demos.tar.gz
dojo-release-1.3.1.tar.gz

ダウンロードしたファイルをapacheのドキュメントルートで解凍します。
File Uploaderで使用されるファイルは以下のとおりです。
ファイルのアップロードに成功すると"UploadedFiles"ディレクトリに保存されます。
$ cd dojo-release-1.3.1/demos/uploader/

$ ls -laF
-rw-r--r--  1 apache apache 1202  3月  1 04:33 README
-rw-r--r--  1 apache apache 5371  6月 10 13:46 UploadFile.php
drwxr-xr-x  2 apache apache 4096  6月 10 14:00 UploadedFiles/
-rwxr--r--  1 apache apache  287 10月  2  2008 buildDemo.sh*
-rw-r--r--  1 apache apache 1238  6月 10 13:57 cLOG.php
-rw-r--r--  1 apache apache 1005 10月  2  2008 demo.css
-rw-r--r--  1 apache apache 2616  3月  4 00:53 demo.html
-rw-r--r--  1 apache apache  264  8月 13  2008 demo.profile.js
-rw-r--r--  1 apache apache 5276  1月 16 10:01 src.js
-rw-r--r--  1 apache apache 1469  6月 10 14:00 upload.txt


1つ目のエラー
「UploadFile.php」のJSON.phpが見つからない。
require文で指定するディレクトリにJSON.phpが存在しないことが原因です。
//
// NOTE: maintain this path for JSON services
//
require("../../dojo/tests/resources/JSON.php");
$json = new Services_JSON();


まずdojoディレクトリの下にtestsディレクトリ自体がありませんので作成します。
(上記のrequireを修正しても良いと思います。)
$ mkdir -p tests/resources


「JSON.php」は、↓のディレクトリにありました。
dojox/analytics/logger/JSON.php


これを、先ほど作成したディレクトリへコピーします。
$ cp JSON.php ../../dojo/resources/


2つ目のエラー
「cLOG.php」の下記のforeach文で発生。
配列でない値が渡される場合があり、それが原因で処理が異常終了しています。
function printr($ar){
    $txt = "";
    foreach ($ar as $nm => $val) {
        $txt .= "    ".$nm ." = " . $val . "\n";
    }
    $this->write($txt);
}

上記の処理を下記のように修正します。
function printr($ar){
    $txt = "";
    if(is_array($ar)){
        foreach ($ar as $nm => $val) {
            $txt .= "    ".$nm ." = " . $val . "\n";
        }
    } else {
        $txt .= "    ".$ar." (not Array)\n";
    }
    $this->write($txt);
}


これはエラーではありませんが、少しおかしいと思ったので修正しました。
アップロードのログは同ディレクトリにある"upload.txt"に書き込まれると思ったのですが、
ログファイルの指定が別のディレクトリのファイルを指しているため、このファイルにログは出力されません。
function trace($txt, $isArray=false){
    //creating a text file that we can log to
    // this is helpful on a remote server if you don't
    //have access to the log files
    //
    //echo($txt."<br/>");
    $log = new cLOG("../resources/upload.txt", false);
    //$log->clear();
    if($isArray){
        $log->printr($txt);
    }else{
        $log->write($txt);
    }
}

緑字の行を↓のように修正
    $log = new cLOG("./upload.txt", false);


これでファイルアップロードが出来るようになりました。
アップロードするファイルを選択すると、ファイル名とファイルサイズが表示されます。
f1.png

ファイルサイズが小さいので一瞬でアップロードが終わってしまいますが、
アップロードの進捗率が表示されます。
f2.png





お気に入りの記事を「いいね!」で応援しよう

最終更新日  2009年06月20日 02時50分26秒
コメント(0) | コメントを書く
[[JS] Dojo Toolkit] カテゴリの最新記事



© Rakuten Group, Inc.