なにから書けばいいのか難しいのですが…
とりあえず、先日次のような質問をしました。
【[html] <input type="file">タグの参照ボタンを画像ボタンにしたい。】
http://oshiete1.goo.ne.jp/kotaeru.php3?q=1244273

その中のやり取りにあるように、参照ボタンを画像にすることはできたのですが、実際に参照ボタンを画像にしてからsubmitすることができなくなってしまいました…

いろいろ調べてみましたら、どうやら<input type="file">をjavascript等でclickして値を入れると、セキュリティ上submitできないみたいなのです。実際そのフォームがsubmitに対して無反応になります。javascriptで強引にsubmitしようとすると"アクセスが拒否されました"のエラーがでます。

なんかごちゃごちゃになってきた…

今自分が実現したいのは、以下の2つです。
1.<input type="file">の参照ボタンを画像にしたい。
2.1を実現後そのformをsubmitしたい。

どなたか実現している方がいましたら、ご教授ください。
IE6で動けば問題ないです。

すみませんコードは文字制限に引っかかって載せれなかったです…

このQ&Aに関連する最新のQ&A

A 回答 (2件)

試してみたところ、submitはキャンセルされてtype="file"の入力内容がクリアされますね。


(クリアされた状態でもう一度submitボタンをクリックすると送信できる。)

私的にはセキュリティ強化としても厳し過ぎる気もしますが・・・今の時点で何か方法が見つかっても今後セキュリティホールとして塞がれてしまう可能性もあるので、諦めたほうがいいのかもしれません。
    • good
    • 1
この回答へのお礼

>steel_grayさん

前回の質問に引き続き回答ありがとうございます。
なんとか抜け道を探そうとしていたのですが、
今後も考えると参照ボタンでやるのがベターですね。

問題は客がそれで納得するかだよなぁ…
まぁ、「これができたらハッキングなんて簡単っすよ」とかいってみますw

お礼日時:2005/03/08 15:12

Wizard_Zeroと申します。



いろいろと試してみましたが、だめですねぇ…。

○ 参照ボタンで選択
× スクリプトで選択
× 参照ボタンで選択 → スクリプトで選択
× スクリプトで選択 → 参照ボタンで選択

私の感想としては、FILEタイプを持つINPUTのVALUE関連項目に対して少しでもスクリプトが関与するとダメっぽいです。
単にClickメソッドを呼び出しても、「ボタンを押した」という完全なシミュレートにはなっていないようですね。
しかも、Submitでクリアされる時、Changeイベントさえ発生しない。

まぁ、#1さんのおっしゃるとおり、出来たとしてもいずれできなくなる可能性もありますし、ここは涙を呑んでデフォルトのまま使うしかないのではないでしょうか。
    • good
    • 0
この回答へのお礼

>Wizard_Zeroさん
回答ありがとうございます。

>単にClickメソッドを呼び出しても、「ボタンを押した」という完全なシミュレートにはなっていないようですね。

みたいですね。確かにfileタイプの目的としてファイルをアップロードすることが1つあると思うので、「ユーザーの意思によって送信された」状態でなければ危険ですから、納得と言えば納得です。

デフォルトの方向で行こうと思います。

お礼日時:2005/03/08 15:21

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QACCESS2003のデータアクセスページの使い方について

イントラ内でACCESS2003のデータアクセスページを使いたい。

1.ACCESS2003のデータアクセスページを作成しました。
2.そのMDBファイルと、データアクセスページ(htmファイル)を、WINDOWS2000ServerのInetpub内のwwwrootフォルダの中へ入れました。
3.ここにはイントラ内のHPなどを置いています。(普通に見れています。)
4.クライアントから、データアクセスページのhtmファイルを見に行くと「データソースログオン」が立ち上がります。(パスワードを設定しています。)
5.パスワードを入れるとデータアクセスページ(htm)から、通常のアクセスのフォームのごとくデータ入力が出来る予定なのですが(泣)できません。(泣)

で、悩んでおります。

ACCESS2003のMDBファイルとデータアクセスページ(HTMファイル)をサーバーのwwwrootへ置いただけでは、データアクセスページを通してmdbファイルへの入出力は不可能なのでしょうか?

Aベストアンサー

MDBに接続されたAccessプロジェクトを開いている場合データアクセスページは自動的にそのデータベースに接続されてそのパスがデータアクセスページのConnectionString プロパティに設定されます。
ページを作成した後でデータベースを移動またはコピーした場合はConnectionString プロパティに設定されているパスを更新して新しい保管場所を設定する必要がありますがどうなっていますか?
そこを確認してみてください。

Q[html] タグの参照ボタンを画像ボタンにしたい。

タイトルのとおりなんですが、<input type="file">をhtmlで記述するとテキストボックスと共に参照ボタンが表示されますよね?
あの参照ボタンを画像ボタンにしたいのですが、どうしたらできるのでしょうか?それともそもそも出来ないのでしょうか?

教えてください。お願いします。

Aベストアンサー

見た目は、これでごまかせます。
機能的にも問題ないです。

> background-image :url(./image.gif);
の「./image.gif」の部分に、自分が表示したい画像のpathを指定



<html>

<head>

<style>
.fake_button
{
width : 10px;
height : 23px;
background-image :url(./image.gif);
background-repeat : no-repeat;
cursor : hand;
}
</style>

<script>
function view_path(_value){
document.all.txtfilename.value=_value;
}
</script>

</head>

<body>
<input type="file" name="uploadFile" style="display:none" onchange="view_path(this.value);">
<input type="text" name="txtfilename" size="25" disabled>
<span onclick="filupload.click();" class="fake_button">
</body>


</html>

参考URL:http://chaichan.hp.infoseek.co.jp/qa3000/qa3341.htm

見た目は、これでごまかせます。
機能的にも問題ないです。

> background-image :url(./image.gif);
の「./image.gif」の部分に、自分が表示したい画像のpathを指定



<html>

<head>

<style>
.fake_button
{
width : 10px;
height : 23px;
background-image :url(./image.gif);
background-repeat : no-repeat;
cursor : hand;
}
</style>

<script>
function view_path(_value){
document.all.txtfilename.value=_value;
}
</script>

</head>

...続きを読む

Qホームページ移転に伴う.htaccessの使い方ですがアップロードして

ホームページ移転に伴う.htaccessの使い方ですがアップロードして削除できなくなる事ないですか??また、さくらサーバーは.htaccess使えますか??

Aベストアンサー

.htaccessだけではなく、
ファイルはパーミッションによっては一旦削除できなくなると思いますよ・・・
使えないのにアップすると削除出来ないとか。

>さくらサーバーは.htaccess使えますか??
使えます。
.htaccessを使えない有料サーバってあるのでしょうか?・・・

Qinput type="file" 参照内容のクリア

「input type="file"」にて、参照ボタン押下後に設定される、
ボタン左のテキストボックスの内容をクリアする方法を探しています。

「input type="file"」項目の直接入力を許可していれば可能かと思いますが、
「OnKeyDown = "return false;"」を設定し、直接入力を禁止しております。
可能であれば、このまま項目の直接入力は禁止としておきたいと思います。

以上の内容で、どなたか解決の方法をご存知ないでしょうか?
何卒宜しくお願い致します。

仕様ブラウザ
IE6・7

Aベストアンサー

http://d.hatena.ne.jp/Mars/20071102
こちらが参考になりますか?

QAccessで作成したテーブルのOLEオブジェクトの使い方

Accessで作成したテーブルにデータ型(OLEオブジェクト型)で画像を取り込みできるようにしました。
取り込みした画像を開くためのフォームを作成して画像を開けるようにしました。
下記の内容です。

Private Sub Form_Open(Cancel As Integer)
Form.Caption = ProgName
End Sub

しかし「ビットマップ形式」ですと問題なく開くのですが、「JPG形式」ですと開けないのです。取り込みしたAccessテーブルのフィールドから直接だとひらけます。
Accessで作成したフォームから、「JPG形式」の画像を開くにはどうすればよろしいですか?
また、画像を1000件ほど取り込みすると大きいデータベースになってしまいます。Accessのデータベースのサイズは制限があるのかしら?
アドバイスいただけれは幸いです。

Aベストアンサー

Access のバージョンは?
んで Web で検索する努力はしましょうよ。
丸 1日ぐらい検索しっぱなしで悩まないと。

Google「access ole jpeg」で検索
http://www.google.com/search?hl=ja&lr=lang_ja&ie=UTF-8&oe=UTF-8&q=access+ole+jpeg&num=50

Access 2003 では以下のような制限があるようです。
■ Access 2003 で OLE オブジェクトとして JPEG および GIF 画像を取り扱う場合の注意事項
http://support.microsoft.com/kb/884484/ja

■ OLE オブジェクト型のフィールドに格納されているイメージが正しく表示されません
http://support.microsoft.com/kb/832508/ja

解決策としては JPEG を開ける OLE コンテナになるアプリケーションをインストールしておく。

Google「Access データベース サイズ 制限」で検索
http://www.google.com/search?hl=ja&num=50&q=Access+%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9+%E3%82%B5%E3%82%A4%E3%82%BA+%E5%88%B6%E9%99%90&lr=lang_ja

Access のバージョンは?
んで Web で検索する努力はしましょうよ。
丸 1日ぐらい検索しっぱなしで悩まないと。

Google「access ole jpeg」で検索
http://www.google.com/search?hl=ja&lr=lang_ja&ie=UTF-8&oe=UTF-8&q=access+ole+jpeg&num=50

Access 2003 では以下のような制限があるようです。
■ Access 2003 で OLE オブジェクトとして JPEG および GIF 画像を取り扱う場合の注意事項
http://support.microsoft.com/kb/884484/ja

■ OLE オブジェクト型のフィールドに格納されているイメージが正...続きを読む

Qinput[type=text]とinput[type="text"]

input[type=text]とinput[type="text"]
どちらが正しいですか?

Aベストアンサー

どちらも正しいと思います。しいて言えば、前者がHTMLでは許される記述、後者がXHTMLの記述ということでしょうか。

HTMLもXHTMLも、どちらもSGMLをベースとしています。XHTMLは、HTMLを記述が厳格なXMLに準拠するように再定義されたものです。

プログラムとの連携が必要になるのであれば、XHTMLで記述するようにした方が何かと便利かと思います。

QAccess2000でFTPの使い方について。

Access2000のフォームから、実行のボタンをクリックするとFTPサーバに接続→ファイル取得→Accessテーブルに取込→FTPサーバのファイル削除→FTPサーバの接続切断という処理をしたいのですがどのようにしたらよいかわかりません。説明不足だとは思いますが、アドバイスを宜しくお願い致します。

Aベストアンサー

ちなみに先ほどのFTPサンプルは、BASP21をインストール後、サンプルのコードを新規モジュールに貼り付けて(たとえば以下をまるごと)実行すればAccessでもそのまま動きます。

sub file_download()

Dim ftp As Object, rc As Long, v As Variant, v2 As Variant
Dim ctr As Long

Set ftp = CreateObject("basp21.FTP")
ftp.OpenLog "c:\temp\log.txt"
rc = ftp.Connect("ftp.microsoft.com", "anonymous", "")
If rc = 0 Then
v = ftp.GetDir("bussys/winnt/winnt-public", 2) ' ディレクトリ一覧(詳細)
If IsArray(v) Then
For Each v2 In v
Debug.Print v2
Next
End If
v = ftp.GetDir("bussys/winnt/winnt-public") ' ディレクトリ一覧(ファイル名のみ)
If IsArray(v) Then
For Each v2 In v
Debug.Print v2
Next
End If
rc = ftp.GetFile("bussys/winnt/winnt-public/*", "c:\temp") 'ファイル受信

end sub

実行には20秒ほどかかります。
実行前にはCドライブにtempというフォルダを作っておいてください。

ちなみに先ほどのFTPサンプルは、BASP21をインストール後、サンプルのコードを新規モジュールに貼り付けて(たとえば以下をまるごと)実行すればAccessでもそのまま動きます。

sub file_download()

Dim ftp As Object, rc As Long, v As Variant, v2 As Variant
Dim ctr As Long

Set ftp = CreateObject("basp21.FTP")
ftp.OpenLog "c:\temp\log.txt"
rc = ftp.Connect("ftp.microsoft.com", "anonymous", "")
If rc = 0 Then
v = ftp.GetDir("bussys/winnt/winnt-public", 2) ' ディレクトリ一...続きを読む

QNetscapで"input type=botton or submit"の・・・。

NNで"input"のボタンのサイズや色を指定したいのですが、うまくいきません。
IEのように、style="width : 00px;background-color : #ffffff;"では、
ダメみたいなのですが・・・。

Aベストアンサー

NN4.7xではINPUTタグでwidth, background-colorは対応していません。
NN6ならちゃんと動作したと思います。

一番無難なのは画像で代用することでしょうか

QRuby on Rails 「attr_accessor」 の使い方に

Ruby on Rails 「attr_accessor」 の使い方について

こんにちは。

現在、Ruby on Railsで登録画面を作成しているのですが、attr_accessorで定義した項目に対して、validationのチェックを行うと、問題が起きてしまいました。

attr_accessorで定義した項目は、DB登録の対象ではないのですが、lengthのチェック等を行う必要があり、validates_length_of等を使って入力チェックを行っています。

問題になったのは、入力があったときだけチェックをかけたいのに、入力がなくてもチェックがかかってしまうという状態になってしまうことです。
「:if => 項目?」を書いてみると、「undefined method」のエラーがでてしまいます。

どなたか対応策の分かる方がおられましたらご教授いただけないでしょうか?

下記に実際の問題箇所のモデルクラスのソースを書いておきます。

 class User < ActiveRecord::Base

   attr_accessor :NEW_USER_PW ← 追加したアクセサ

   # 追加したアクセサに対するチェック
   validates_length_of :NEW_USER_PW, :minimum=>4, :message=>"は%d桁以上を設定してくださ            
    い。", :on => :update, :if => :NEW_USER_PW?

 end

上記のチェック内の「:if => :NEW_USER_PW?」で落ちてしまいます。
入力がないのにチェックに引っかかるとまずいので、入力がないときだけ上記チェックを行えれば良いのですが・・・。

どうぞ宜しくお願い致します。

Ruby on Rails 「attr_accessor」 の使い方について

こんにちは。

現在、Ruby on Railsで登録画面を作成しているのですが、attr_accessorで定義した項目に対して、validationのチェックを行うと、問題が起きてしまいました。

attr_accessorで定義した項目は、DB登録の対象ではないのですが、lengthのチェック等を行う必要があり、validates_length_of等を使って入力チェックを行っています。

問題になったのは、入力があったときだけチェックをかけたいのに、入力がなくてもチェックがかかってしまうという状...続きを読む

Aベストアンサー

attr_accessor :NEW_USER_PWを定義したからといって、
NEW_USER_PW?メソッドが定義されるわけではりません。
attr_accessorはゲッターとセッターメソッドを作るだけです。
それ以外の論理値を返すようなメソッドは自作しなければなりません。

NEW_USER_PW?メソッドを作成されていないのなら、「undefined method」が
出てしまうのは当然です。

質問にあるように、「入力があった場合のみ」とありますので、
NEW_USER_PW?メソッドを下記のように実装すればチェック可能です。

def NEW_USER_PW?
@NEW_USER_PW.size > 0
end

また、ifにはprocオブジェクトを渡すこともできますので、
:if => Proc.new{|u| u.NEW_USER_PW.size > 0}
と書いてもいいでしょう。


NEW_USER_PWというインスタンス変数はすべて大文字を使用されていますが、
見る人によっては定数と勘違いします。
変数であれば小文字表記を利用するほうが良いかもしれません。

attr_accessor :NEW_USER_PWを定義したからといって、
NEW_USER_PW?メソッドが定義されるわけではりません。
attr_accessorはゲッターとセッターメソッドを作るだけです。
それ以外の論理値を返すようなメソッドは自作しなければなりません。

NEW_USER_PW?メソッドを作成されていないのなら、「undefined method」が
出てしまうのは当然です。

質問にあるように、「入力があった場合のみ」とありますので、
NEW_USER_PW?メソッドを下記のように実装すればチェック可能です。

def NEW_USER_PW?
@NEW_USER_PW.s...続きを読む

Qinput type="file"のmaxlengthについて

こんにちは
<input type="file">について、以下の点お教えください。

ソースで<input type="file" name="test" maxlength="10">
とした場合に、コピー&ペーストでは、例えば20byte文字列を貼り付けると10byteまでしかボックスには反映されないのですが、
その後直接手入力ができます。
また、ボタンからダイアログを起動してパスを指定した場合も、maxlength以上の桁数がセットされます。
ソースの書き方が悪いのでしょうか?
それとも手入力文字数やダイアログからの桁数の制限をかけられないという仕様(HTML?IE?)なのでしょうか?

また、ダイアログからパスを指定した場合、このパスが255byte以上(254byteはOK)だと、
パス内容がボックスに反映されないのですが、
これもまた仕様なのでしょうか?
(ファイル名の最長桁数が256byteだと思うと問題があるような気がするのですけども)

※私のマシンはWinXPでIE6のSP2を使用しています。

以上の点について、何か情報をお持ちの方は回答お願いします!!

こんにちは
<input type="file">について、以下の点お教えください。

ソースで<input type="file" name="test" maxlength="10">
とした場合に、コピー&ペーストでは、例えば20byte文字列を貼り付けると10byteまでしかボックスには反映されないのですが、
その後直接手入力ができます。
また、ボタンからダイアログを起動してパスを指定した場合も、maxlength以上の桁数がセットされます。
ソースの書き方が悪いのでしょうか?
それとも手入力文字数やダイアログからの桁数の制限をかけられないという仕...続きを読む

Aベストアンサー

> (ファイル名の最長桁数が256byteだと思うと問題があるような気がするのですけども)
問題ありません。
何も送信しないだけです。
存在しないファイル名を指定しても何も送信されません。
MacOS Xでは500バイト以上のパスにすることが出来ます。

> あと、あまりにも長い文字を入れていくと、コピペをした際に値が表示されなくなったり、
> でもカーソルを移動させると突如文字が見えるようになったり、
> あまり見栄えのよろしくないことも発生します。
ブラウザ依存です。
特にMacでは、「ファイルを送信する(個人情報やセキュリティーに関係する)」ということを明確にするために、
CSSやタグ属性で見た目を変更したり隠したりすることに制限があります。

> 手入力だと入ってしまうので同期をとってほしいということでの対応なのです。
お客様理論への対応オツカレサマです(^^;
ファイルフィールドは、javascriptから操作することは出来ません。
なので、onsubmitで<input>のvalueを取って、
一定の文字数(バイト数)以上だったらalert()とreturn falseするくらいだと思います。

WindowsIEのみかもしれませんが、
http://www.microsoft.com/japan/msdn/columns/webteam/webteam07022001.aspx#webteam07022001_topic1
ファイルフィールドをdisplay:noneで隠しておいて、
かわりにテキストフィールドとボタンでエミュレートする方法です。
テキストフィールドなら、スタイルシートやJavaScriptで操作出来ると思います。

該当のページでも解説がありますが、正確なファイル名を手入力してもファイルを送信出来ません。
ですからdisabledを指定して、手入力出来なくしています

参考URL:http://www.microsoft.com/japan/msdn/columns/webteam/webteam07022001.aspx

> (ファイル名の最長桁数が256byteだと思うと問題があるような気がするのですけども)
問題ありません。
何も送信しないだけです。
存在しないファイル名を指定しても何も送信されません。
MacOS Xでは500バイト以上のパスにすることが出来ます。

> あと、あまりにも長い文字を入れていくと、コピペをした際に値が表示されなくなったり、
> でもカーソルを移動させると突如文字が見えるようになったり、
> あまり見栄えのよろしくないことも発生します。
ブラウザ依存です。
特にMacでは、「ファイル...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報