Curl Global Community
ディレクトリ操作について - Printable Version

+- Curl Global Community (https://communities.curl.com)
+-- Forum: Discussions (https://communities.curl.com/forumdisplay.php?fid=1)
+--- Forum: General Curl questions (https://communities.curl.com/forumdisplay.php?fid=2)
+--- Thread: ディレクトリ操作について (/showthread.php?tid=1450)



ディレクトリ操作について - rom - 04-19-2017

こんにちは。

現在Curlシステム開発でサーバー上のフォルダ内にあるファイルの一覧を取得して
そのファイルが「xls」の場合のみリストボックスに表示する必要があります。


ローカルの開発環境では相対パスでディレクトリを指定し、
for文のkeyキーワードを使用してディレクトリ内のファイルをループしながら取得できるのですが、


サーバ上で実行した場合にディレクトリを取得出来なくて困っています。
エラーメッセージ:「型 'HttpFile' にメソッド 'keys-to-Iterator' がありません」
===
|| ローカルで動かす場合はうまく動いている...
let v:any = {{url "../../hoge/hoge"}.resolve}
{for key k:String in v do
{if {url {String {v.get k}}}.extension == ".xls" then
{popup-message k}
}
}




RE: ディレクトリ操作について - tdeng - 04-21-2017

Curlのアプリケーションはクライアント側で実行するものです。CurlのアプリケーションがWEBサーバー側に配置し、ユーザーがそのアプリをウェブサーバー経由して実行する場合、CurlアプリケーションはそのユーザーのPC上で実行され、サーバー側に配置されたほかのリソースへのアクセスは、通常以下2種類の方法があると考えられます。

1.HTTP経由してアクセス。
この場合、Curlアプリでサーバー側のフォルダ配下にXLSファイルの情報はサーバー側ウェブサーバー・ウェブアプリケーションサーバー経由してアクセスすることになります。
(1)単なるWebサーバーの場合、そのフォルダ配下にフォルダ一覧をリストする権限を付与したフォルダでなければなりません、
http://www.yourserver.com/folder/to/xls-list/ にアクセスすれば、ウェブサーバーの機能として、そのファイル一覧が取得できる。
(2)ウェブアプリケーションサーバーの場合、該当フォルダのファイル一覧取得(加えてxlsの割り出しも)できるサーバーAPIを作成して、Curlアプリケーション側では、そのサーバーアプリにアクセスすれば、XLSの一覧が取得できる。

2.file:///プロトコルでアクセス
この場合、前提条件として、ユーザーのPC上から、Curlのアプリケーションから確認したいサーバー側のフォルダにアクセスできる様に、ファイル共有する必要があります。 Curlアプリケーション側で、以下の様なURLを使って、アクセスできると思われます:
{url "file:////YOU_SERVER_NAME/FOLDER/TO/ACCESS/"}

説明がわかりずらいかもしれませんが、よろしくお願い致します。



RE: ディレクトリ操作について - rom - 04-24-2017

tdeng様

返信ありがとうございます。

今回サーバー側に配置されたリソースのアクセスはHTTP経由で行いたいと思っております。

>(1)単なるWebサーバーの場合、そのフォルダ配下にフォルダ一覧をリストする権限を付与したフォルダでなければなりません、
http://www.yourserver.com/folder/to/xls-list/ にアクセスすれば、ウェブサーバーの機能として、そのファイル一覧が取得できる。

上記を実装するようなCurlのソースが分からないのですがどのように調べればよいでしょうか。。。

現状はlet v:any = {{url "../../hoge/hoge"}.resolve}のようなソースで実装出来ているとおもっておりますが

上記のソースを実行すると「http://IPアドレス/フォルダパス 」のようなURLで

変数:vにオブジェクトが返されるのですが、ネットワーク上にあるものと判定されるので

HttpFileオブジェクトが返ってきてしまいます。

※ローカルの開発環境PCで実行すると帰ってくるオブジェクトはLocalDirectoryというものです...

上記のオブジェクトからディレクトリの一覧が取得出来ず困っている状態です。

現在の環境としては、サーバー上にCurlソースコードを配置し、各ローカルのPCからそこのCurlのstart.dcurlにアクセスするショートカットをつくってあるような状態です。
取得したいExcelフォルダはCurlのソースコードがある場所と同じ階層にあります。

※ブラウザ上で「http://IPアドレス/フォルダパス 」を入力するとディレクトリの中身が見れて、
各ファイルをクリックするとダウンロードされるような状態になっております


RE: ディレクトリ操作について - tdeng - 04-24-2017

LocalDirectory と HttpFile両方対応する必要がある場合、返されてきたオブジェクトのデータ型を判断し、そのデータ型によって、処理を分けて実装する必要があるかと思われます。


RE: ディレクトリ操作について - tdeng - 04-24-2017

補足でご存知かと思いますが、LocalDirectoryの場合、ローカルファイルシステムの情報として、Directoryオブジェクトにファイル一覧と取得できるのに対し、HttpFileの場合、Directoryではないので、HttpFileで該当パスのURLにアクセス(読込)したら、ブラウザから同じURLにアクセスする場合と同じ、テキスト形式でその一覧が取得されますので、そのテキストを解析し、どれがxlsファイルかを判断し、そのXLSファイルごとに、アクセスする為のURLを作成し、必要な処理で利用すればいいではないでしょうか。


RE: ディレクトリ操作について - rom - 04-25-2017

tdeng様

ありがとうございます。
無事HttpFileを読み込んでHTMLファイルを解析してファイルの一覧を取得できるようになりました!

>LocalDirectory と HttpFile両方対応する必要がある場合、返されてきたオブジェクトのデータ型を判断し、そのデータ型によって、処理を分けて実装する必要があるかと思われます。

上記の対応も型比較で対応できたのですっきりいたしました。

丁寧な説明ありがとうございました!


RE: ディレクトリ操作について - tdeng - 04-25-2017

問題が解決できて、何よりです。romさんと同じ気持ちでうれしいです。