0

Asp.Net MVC と Jquery を使用しています。画像をアップロードするためのファイル入力コントロールを含むフォームがあります。データベースに保存する前に、選択した画像をプレビューしたいと思います。

私が使用したコードはこちらです。

<img id="preview_image" alt="" src="" width="100px" height="120px"/>
<input type="file" name="user_image" id="user_image" onchange="preview(this);"/>
<script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")" type="text/javascript"></script>
<script type="text/javascript" language="javascript">
    function preview(input) {
        if (input.files && input.files[0]) {
            var reader = new FileReader();
            reader.onload = function (e) {
                $('#preview_image')
                    .attr('src', e.target.result)
                    .width(100)
                    .height(120);
            };

            reader.readAsDataURL(input.files[0]);
        }
    }
</script>

Internet Explorer と Safari では動作しません。これらのブラウザでは「FileReader」がサポートされていないため

Flash プラグインを使用しない他の解決策はありますか? 前もって感謝します

4

2 に答える 2

0

これを行うためにクライアントに依存することは、あなたに頭痛と問題を長期的に与えるでしょう。

私の解決策は、確認ページを使用することです。このページでは、ユーザーがアップロード、サイズ変更、一時領域に保存した画像をユーザーに表示します。ユーザーがクリックして確認したら、画像をデータベースに保存します。次に、画像を削除するか、キャッシュとして使用できる場所に移動する可能性が高くなります。

確認ページのルートをたどりたくない場合は、画像だけを送信してサイズを変更し、ajaxを使用して一時的な領域から元に戻すことができます。

最後に、データベース内の画像は理論的には優れていますが、特に非常に大きい場合は、適切に拡大縮小されません。私たちの戦略は、アップロードされた画像の6つの異なるバージョン/サイズを作成し、元の画像を含めてファイルシステムに保存することです。これにより、必要なサイズで画像を柔軟に使用でき、データベースを大幅に軽量化できます。

于 2012-11-28T12:56:20.107 に答える
0

FileSystemObjectこの質問に記載されているように、ActiveX オブジェクトを確認できます: IE とローカル ファイルの読み取り

于 2012-11-28T11:11:04.583 に答える