14

ASP.net の FileUpload コントロールを使用してアップロードする方法を知っています。

私がやりたいことは、この jQuery Multiple File Upload Plugin を使用して複数のファイルをアップロードすることです。

アップロード用に複数のファイルが選択された場合の正確な動作は次のとおりです。

<input type="file class="multi MultiFile" id="MultiFile1_F3" name="file1[]" style="position: absolute; top: -3000px;">

しかし、asp.net からこれらのファイルを操作する方法がわかりません。次のリンクの指示に従って、Request.Files を使用してみました: ASP.Net Upload of multiple files after choose them from jQuery

それはうまくいきません。コンパイル時に runat="server" でマークされたコントロールでのみ機能すると思います。

誰もこれを行う方法を知っていますか? 多分Request.Formの何か...?

ご協力いただきありがとうございます!

4

4 に答える 4

5

2 つの確認事項:

  • フォームに enctype="multipart/form-data" 属性が設定されていることを確認してください。これは、アップロードを有効にするために必要です。
  • すべてのファイル入力に id 属性と name 属性の両方が設定されていることを確認してください。両方を設定しないと、なぜかおかしなことが起こります。

また、 runat="server" は、 Request.Files が機能するかどうかとは関係ありません。これは、実際にファイルを投稿するブラウザーの問題です。

于 2009-02-20T00:55:17.973 に答える
5

この jQuery プラグインは、生成されたすべての入力コントロールにまったく同じ name 属性を与えていました。

このため、ファイルは投稿されませんでした。

独自の JavaScript ソリューションを構築しました。

コードへのリンクをコメントに投稿します。

編集

私はこれを再訪し、私がやろうとしていたことはまったく難しいことではないことがわかりました. jquery 複数ファイル アップロード プラグインが aspx フォームで正常に動作するようになりました。なんで今までこんなに悩んでいたのかわからない。

1.) Web フォームに jQuery ライブラリを含めます。

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js" type="text/javascript" />

2.) Web フォームで複数ファイル プラグインを参照します (ここからダウンロードします)。

<script src="jquery.MultiFile.pack.js" type="text/javascript">

3.) class="multi" を使用して Web フォームにファイル入力を追加します。

<input type="file" class="multi" />

4.) フォーム送信時にコードを実行するか、次のようなメソッドを呼び出します。

    void SendMail(string from, string to, string subject, string body, string smtpServer)
    {
        // create mail message
        MailMessage mail = new MailMessage(from, to, subject, body);

        // attach posted files
        for (int i = 0; i < Request.Files.Count; i++)
        {
            HttpPostedFile file = Request.Files[i];
            mail.Attachments.Add(new Attachment(file.InputStream, file.FileName));
        }

        //send email
        new SmtpClient(smtpServer).Send(mail);
    }

aspx ページから送信された電子メールに複数のファイルを添付するために必要な作業はこれだけです。

アップロードできるファイルの合計サイズを増やしたい場合は、これを web.config ファイルに追加します。

<system.web>
    <httpRuntime executionTimeout="240" maxRequestLength="30720"/>
</system.web>

executionTimeout は秒単位で測定され、maxRequestLength はキロバイト単位で測定されます。この例では、リクエストは 4 分後にタイムアウトになり、30 MB のリクエストが許可されます。

于 2009-02-20T20:13:48.877 に答える
2

.NET でそのようなことを行ってから少し時間が経ちましたが、フォーム入力の動的な複製を開始したら、Request.Form に移動して、送信された値を手動で見つける必要があると思います。ここで、シーケンシャル識別子を使用していくつかの (ファイル以外の) 入力を複製する jQuery コードを作成しました。一意の識別子がある限り、ループを実行して Request.Form["MultiFile1_F" + counter] が存在するかどうかを確認し、そこから移動できます。

于 2009-02-18T20:38:50.280 に答える
2

複数のファイルをアップローダーとしてUploadifyを強くお勧めします。jquery と flash を使用して、ctrl + 必要なすべてのファイルをクリックすることで、ユーザーが一度に複数のファイルをアップロードできるようにします。次に、アップロード中のファイルのキューを表示し、完了時にファイルをキューから削除します。また、ユーザーがアップロードできる拡張機能を指定できるため、拡張機能の検証を行う必要がなくなります。

編集:
フラッシュを使用したくない場合は、Ajax アップロードも非常にうまく機能します。私のサイトの会社のサイトのユーザーが、uploadify で最適に動作する適切なバージョンの Flash を持っていない場合、私は Ajax Upload に切り替えます。どちらも私にとって非常にうまく機能します。

于 2009-12-22T21:57:13.503 に答える