使用しました<input type= "file" name="Upload" >
ここで、.pdfファイルと.xlsファイルのみを受け入れることでこれを制限したいと思います。
送信ボタンをクリックすると、これが検証されます。
また、Webページのファイル(PDF / XLS)をクリックすると、自動的に開きます。
誰かがこれのいくつかの例を挙げてもらえますか?
属性を使用し、accept
許可された MIME タイプを追加することで、これを行うことができます。しかし、すべてのブラウザーがその属性を尊重しているわけではなく、一部のコード インスペクターを使用して簡単に削除できます。どちらの場合も、サーバー側でファイルの種類を確認する必要があります (2 番目の質問)。
例:
<input type="file" name="upload" accept="application/pdf,application/vnd.ms-excel" />
3 番目の質問「Web ページでファイル (PDF/XLS) をクリックすると、自動的に開くはずです。」:
あなたはそれを達成することはできません。クライアント マシンで PDF または XLS を開く方法は、ユーザーが設定します。
残念ながら、選択時にそれを行う保証された方法はありません。
一部のブラウザーは、タグのaccept
属性をサポートしています。input
これは良いスタートですが、完全に信頼することはできません。
<input type="file" name="pic" id="pic" accept="image/gif, image/jpeg" />
を使用しcfinput
て検証を実行すると、送信時にファイル拡張子を確認できますが、MIME タイプは確認できません。これは優れていますが、それでも絶対確実というわけではありません。OSX 上のファイルには多くの場合、ファイル拡張子がないか、ユーザーがファイルの種類に悪意を持って誤ったラベルを付ける可能性があります。
ColdFusionは、結果 ( )cffile
のプロパティを使用して MIME タイプを確認できますが、これはアップロード後にのみ行うことができます。これが最善の策ですが、MIME タイプが間違っている可能性があるため、100% 安全というわけではありません。contentType
cffile.contentType
次の方法を試すことができます
<input type= "file" name="Upload" accept = "application/pdf,.csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel">
または (asp.net mvc 内)
@Html.TextBoxFor(x => x.FileName, new { @id = "doc", @type = "file", @accept = "application/pdf,.csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel" })
シェルを含む任意のファイルをアップロードできる Firefox のライブ HTTP ヘッダーなどのツールがあるため、ファイル サーバー側をフィルター処理します。人々があなたのサイトをハッキングする可能性があります。安全のために、サーバーサイトを実行してください。
ファイルアップロードコントロールで、ユーザーがボタンクリックでアップロードできるファイルの種類を制限する場合は、これが方法です..
<script type="text/JavaScript">
<!-- Begin
function TestFileType( fileName, fileTypes ) {
if (!fileName) return;
dots = fileName.split(".")
//get the part AFTER the LAST period.
fileType = "." + dots[dots.length-1];
return (fileTypes.join(".").indexOf(fileType) != -1) ?
alert('That file is OK!') :
alert("Please only upload files that end in types: \n\n" + (fileTypes.join(" .")) + "\n\nPlease select a new file and try again.");
}
// -->
</script>
次に、上記のボタンの onClick のようなイベントから関数を呼び出すことができます。これは次のようになります。
onClick="TestFileType(this.form.uploadfile.value, ['gif', 'jpg', 'png', 'jpeg']);"
PDF
これを次のように変更できます。XLS
ここで実装されているのを見ることができます:デモ
この特定の例は複数ファイルのアップロード用ですが、必要な一般情報を提供します。
https://developer.mozilla.org/en-US/docs/DOM/File.type
/download/ でファイルを操作する限り、これは Javascript の問題ではなく、サーバーの設定の問題です。ユーザーが PDF または XLS ファイルを開くために何かをインストールしていない場合は、それらをダウンロードするしかありません。