2012-02-21 20 views
8

ユーザーがフォルダをファイルアップロードコントロールにドラッグアンドドロップしてアップロードしようとすると、ファイルのみをアップロードできるというエラーメッセージをユーザーに表示する必要があります。問題は、ファイルをフォルダと区別できないことです。jqueryでドラッグアンドドロップを使用してアップロード中にファイルをフォルダから区別する方法はありますか?

私は、jQueryのファイルタイププロパティを調べることを考えました。ファイルの名前を "test.txt"とすると、ファイルタイプは "text/plain"を返します。 "TestFolder"などの通常のフォルダ名の場合、ファイルタイプは空白で、ファイルサイズは0になります。ただし、フォルダ名に "TestFolder.txt"のような拡張子が含まれていると、ファイルタイプは "text/plain"を返します。

ファイルの種類とファイルサイズを確認できましたが、 "TestFolder.txt"のようなフォルダ名では正しく動作しませんでした。 jQueryや他のメソッドを使用してこれを修正するには、良い解決策を提案する人がいますか?

+1

"ドラッグアンドドロップ"プラグインを使用していることを指定できますか? (もしあれば) –

+0

IEにはまだFileAPIがないことに注意しておきたいかもしれないので、おそらくちょうど名前のファイルサイズを与えるかもしれません。 – index

+0

これを見て、それがあなたに役立つかもしれないと思った、彼らは同じ問題を抱えていた:[ファイルやフォルダを区別する方法](http://stackoverflow.com/questions/5893787/how-do-i-distinguish-a-file- or-a-drag-and-drop-in-c) – JamaicanMeCrazy

答えて

-1

私が知っている限り、ブラウザ(とjavascriptは本質的に)はセキュリティ上の目的でファイルアクセス方法にアクセスできないため、ファイルが実際に何であるかを確認することはできません。

私は過去にこの問題を自分で解決しましたが、私は、ファイルサーバー側を処理し、アップロードが完了した後でエラーをページに戻すことが最も良い方法であることを発見しました。

私はより良い選択肢を自分自身で見ることに満足しています。

3

フォルダが削除されたかどうかを判断する能力は、ユーザエージェントのFilesystem APIのサポートに依存します。ユーザーエージェントがファイルシステムAPI(現時点ではChrome 21+のみ)をサポートしている場合は、DirectoryEntryFileEntryという2つの子インターフェイスを持つEntryインターフェイスを使用できます。インターフェイス自体にはisDirectoryisFileの機能があります。このインターフェイスをサポートしていないと、DataTransferオブジェクトを調べるときに、ドロップされたアイテムがフォルダであるかどうかを判断する方法がありません。

0

フォルダーをドラッグ&ドロップすることはできませんので、最初にフォルダーまたはファイルであるかどうかを確認し、2番目にフォルダーではない場合はファイル拡張子を確認してください。しかし、IE < 11は、処理するファイルAPIをサポートしていません。それが役に立てば幸い。

関連する問題