人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Javascript で質問があります。

HTMLタグでファイルを参照するには、
<input type="file" name="fileGetterName" size="16">
と打ち込めばファイルが参照できますが、フォルダを指定したい場合、HTMLタグでは無理だとわかりました。

そこで、Javascriptを使用してフォルダを指定してCGIに渡したいのですが、可能でしょうか?

●質問者: zachouR
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:CGI HTML JavaScript タグ ファイル
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● minkpa
●23ポイント

http://www.tohoho-web.com/lng/199907/99070213.htm

◎質問者からの返答

ありがとうございます


2 ● KUROX
●23ポイント

Javascriptを使用して、

ファイルダイヤログを開いて、フォルダを選択させて

フォルダ名をCGIに渡したいという意味だと思うのですが、

それは無理だと思います。

JavaApletとかActiveXとか組み込めば可能だと

思いますが・・。

http://q.hatena.ne.jp/answer

◎質問者からの返答

やはり、JAVAでなければ無理ですか、、、ありがとうございます


3 ● hiramatsu_kg
●22ポイント

http://www.lares.dti.ne.jp/~westvill/200603.html

◎質問者からの返答

ありがとうございます


4 ● lunlumo
●22ポイント

複数ファイルの一括アップロードであれば,BFup等を使えば可能です。

http://www.hi-ho.ne.jp/babaq/bfup.html

http://swfupload.mammon.se/index.php

IE+JavaScriptであれば,かなり無理繰りですが,以下の様なスクリプトで出来るようです。

function selectFolder() {
var dir = "";
var objIE = null;
try{
objIE = new ActiveXObject( "InternetExplorer.Application" );
}catch(e){
return "";
}
objIE.Navigate( "C:\\" );
while (objIE.ReadyState != 4) true;

var objShell = objIE.Document.Application;
var objFolder = objShell.BrowseForFolder( 0, "フォルダを選択してください", 0);
if (objFolder) {
try {
dir = objFolder.Self.Path;
} catch (e) {}
}
objIE.quit();

return dir;
}
function upload() {
vardir = selectFolder();
if (dir != "") {
varfs = new ActiveXObject("Scripting.FileSystemObject");
varhttpRequest = new ActiveXObject("Msxml2.XMLHTTP");
varfolder = fs.GetFolder(dir);
varboundary = "directory_update";
varrequestBody = "";
var files = folder.Files;
var e = new Enumerator(files);
while (!e.atEnd()) {
varfile = e.item();
varts = file.OpenAsTextStream(1,-2);
requestBody +=
'--' + boundary + '\r\n' +
'Content-Disposition: form-data; name="files"; filename="' + escape(file.Name) + '"' + '\r\n' +
'Content-Type: application/octet-stream' + '\r\n' +
'\n' +
ts.ReadAll() + '\r\n';
ts.Close();
e.moveNext();
}
requestBody += '--' + boundary + "--";
httpRequest.Open("POST", "http://www.nowhere.com/cgi-bin/test.cgi", false);
httpRequest.setRequestHeader("Content-type", "multipart/form-data; boundary=\"" + boundary + "\"");
httpRequest.setRequestHeader("Connection", "close");
httpRequest.setRequestHeader("Content-length", requestBody.length);
httpRequest.send(requestBody);
}
}

フォルダの選択処理は少し無理があるので,ファイルを選択して同じディレクトリ下のファイルを処理するか,ユーザに処理対象のファイルを選択させる様にした方が良いかもしれません。送信処理についてもかなり端折って書いているので,バイナリファイルの考慮であるとか,実際に使うのであれば処理を作りこむ必要があるでしょう。

◎質問者からの返答

ありがとうございます。

ちょっと実験してみます。

現在はファイルを指定させてそこからフォルダまでのパスを抽出するようにしています。

ありがとうございました

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ