0

次のHTML入力とJavascriptを使用して、ユーザーは1ページに最大3つのファイルを追加できます。

ファイルアップロード入力のコード:

    <input id="my_file_element" type="file" name="file_1" >
    <input type="submit">
Files:
<div id="files_list"></div>
<script> 
    var multi_selector = new MultiSelector( document.getElementById( 'files_list' ), 3 );
    multi_selector.addElement( document.getElementById( 'my_file_element' ) );
</script>

HTMLヘッダーのJavaScript:

<script language="javascript"> 

    function MultiSelector( list_target, max ){

    this.list_target = list_target;

    this.count = 0;

    this.id = 0;

    if( max ){
        this.max = max;
    } else {
        this.max = -1;
    };

    this.addElement = function( element ){


        if( element.tagName == 'INPUT' && element.type == 'file' ){

            element.name = 'file_' + this.id++;


            element.multi_selector = this;

            element.onchange = function(){

                var new_element = document.createElement( 'input' );
                new_element.type = 'file';

                this.parentNode.insertBefore( new_element, this );

                this.multi_selector.addElement( new_element );

                this.multi_selector.addListRow( this );

                this.style.position = 'absolute';
                this.style.left = '-1000px';

            };

            if( this.max != -1 && this.count >= this.max ){
                element.disabled = true;
            };

            this.count++;

            this.current_element = element;

        } else {
            alert( 'Error: not a file input element' );
        };

    };

    this.addListRow = function( element ){


        var new_row = document.createElement( 'div' );


        var new_row_button = document.createElement( 'input' );
        new_row_button.type = 'button';
        new_row_button.value = 'Delete';

        new_row.element = element;


        new_row_button.onclick= function(){

            this.parentNode.element.parentNode.removeChild( this.parentNode.element );

            this.parentNode.parentNode.removeChild( this.parentNode );


            this.parentNode.element.multi_selector.count--;

            this.parentNode.element.multi_selector.current_element.disabled = false;

            return false;
        };

        new_row.innerHTML = element.value;

        new_row.appendChild( new_row_button );

        this.list_target.appendChild( new_row );

    };

};
    </script>

Pl /SQLを使用してBLOBファイル(最大3つ)をOracle DBに挿入するにはどうすればよいですか?

4

1 に答える 1

0

ワームの缶。私は少し見回しましたが、あなたがやりたいことはまったく簡単ではないということだけがわかります。回避しなければならない問題がいくつかあります。しかし、興味があれば、勇敢な人がプラグインを複数ファイルのアップロードで利用できるようにしました(価格で)。

主な問題は、ApexにはAJAXを介したファイルのアップロードを処理する方法がないことです。プラグインのドキュメントから、いくつかの情報を収集できます。ファイルはチャンクで処理され、最後に再構築されます。IE(およびHTML5以外のブラウザー(およびIE9にもFileReaderオブジェクトがない))では、ファイルは別のページとiframeを介して1つずつ処理されます。おそらく、このページにはファイル参照項目があります。ファイルもすぐにアップロードされると思います。

別の方法は、おそらくapexリスナーを使用することです。ここでは、これを機能させるためにさらに理解する必要があります。

ただし、「ファイルのアップロード(最大3)」と言う場合、これは最大3つのファイルしかアップロードできないことを意味しますか?その場合は、3つのファイル参照アイテムを作成して、動的に表示/非表示にしてみませんか?マルチファイルプラグインを模倣しようとする手間を省きます。

必要に応じて、特にIEを使用する場合は、追加のページを使用するのが最善の方法です。

HTML5ブラウザでは、JavaScriptでFileReaderオブジェクトを試し、ファイルを読み取ってエンコードし、チャンクで処理して、plsqlを介してサーバー側に戻すことができます。詳細については、JavaScriptでのローカルファイルの読み取りHtml5 File UploadwithProgressを確認してください。

于 2012-05-21T09:19:08.940 に答える