2011-12-27 2 views
0

私はイベントに慣れていて、新しいフラッシュです。私はPluploadを使って自分のフォルダにファイルをアップロードすることができました。私のコードでC#でプルアップ - イベント?

<style type="text/css"> 
    @import url(/plupload/js/jquery.plupload.queue/css/jquery.plupload.queue.css); 
</style> 
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script> 
<script type="text/javascript" src="http://bp.yahooapis.com/2.4.21/browserplus-min.js"></script> 
<script type="text/javascript" src="/plupload/js/plupload.full.js"></script> 
<script type="text/javascript" src="/plupload/js/jquery.plupload.queue/jquery.plupload.queue.js"></script> 
<script type="text/javascript"> 
    $(function() { 
     $("#uploader").pluploadQueue({ 
      // General settings 
      runtimes: 'gears,flash,silverlight,browserplus,html5', 
      url: '/uploader.ashx', 
      max_file_size: '10mb', 
      chunk_size: '1mb', 
      unique_names: true, 
      preinit: attachCallbacks, 
      // Resize images on clientside if we can 
      //resize: { width: 320, height: 240, quality: 90 }, 
      // Specify what files to browse for 
      filters: [ 
       { title: "Image files", extensions: "jpg,gif,png" }, 
       { title: "Zip files", extensions: "zip" } 
      ], 
      // Flash settings 
      flash_swf_url: '/plupload/js/plupload.flash.swf', 
      // Silverlight settings 
      silverlight_xap_url: '/plupload/js/plupload.silverlight.xap' 
     }); 

     // Client side form validation 
     $('form').submit(function (e) { 
      var uploader = $('#uploader').pluploadQueue(); 
      // Validate number of uploaded files 
      if (uploader.total.uploaded == 0) { 
       // Files in queue upload them first 
       if (uploader.files.length > 0) { 
        // When all files are uploaded submit form 
        uploader.bind('UploadProgress', function() { 
         if (uploader.total.uploaded == uploader.files.length) 
          $('form').submit(); 
        }); 
        uploader.start(); 
       } else 
        alert('You must at least upload one file.'); 
       e.preventDefault(); 
      } 


     function attachCallbacks(Uploader) { 

     Uploader.bind('FileUploaded', function(Up, File, Response) { 
      if ((Uploader.total.uploaded + 1) == Uploader.files.length) { 
       window.location = '/display.aspx'; 
      } 
     }); 
    } 
}); 

そして、私のハンドラ::私は(!あまりにもそれに新)ジェネリックハンドラを使用しています

はここに私のコードです

public class uploader : IHttpHandler 
    { 
     public void ProcessRequest(HttpContext context) 
     { 
      int chunk = context.Request["chunk"] != null ? int.Parse(context.Request["chunk"]) : 0; 
      string fileName = context.Request["name"] ?? string.Empty; 

      HttpPostedFile fileUpload = context.Request.Files[0]; 

      var uploadPath = context.Server.MapPath(GlobalVariables.UploadPath); 
      using (
       var fs = new FileStream(Path.Combine(uploadPath, fileName), 
             chunk == 0 ? FileMode.Create : FileMode.Append)) 
      { 
       var buffer = new byte[fileUpload.InputStream.Length]; 
       fileUpload.InputStream.Read(buffer, 0, buffer.Length); 

       fs.Write(buffer, 0, buffer.Length); 
      } 

      context.Response.ContentType = "text/plain"; 
      context.Response.Write("Success"); 
     } 

     public bool IsReusable 
     { 
      get { return false; } 
     } 
    } 

これがされ作業100%

問題は、アップロードが完了しても何も起こりません。ファイルがアップロードされたという事実が表示されました。

私は何とか新しい方法を発射する必要があります。つまり、アップロードしたファイルを処理する必要があります。それらを正しいフォルダに移動してください...それらの名前をデータベースに追加し、表示画面にリダイレクトしてください。

私はコードに何か(イベント)をさせるためにフラッシュコントロールが必要ですし、現在処理できるファイル(アップロードされたファイルのリスト)も自分のコードに伝えてください。

これは可能ですか?

編集:attachCallbacksメソッドを追加しました。添付されています。今はページにリダイレクトされますが、何らかの方法でアップロードされたファイルのリスト(ジェネリックハンドラかもしれませんか?)を送信し、ファイルを処理する必要があります。メソッドにリダイレクトするにはどうすればよいですか?

答えて

0
........ 
uploader.bind('UploadProgress', function() { 
    if (uploader.total.uploaded == uploader.files.length) 
    $('form').submit(); 
}); 

uploader.bind('UploadComplete', function (up, files) { 
    //files are uploaded, call script for each file...etc 
}); 


uploader.start(); 
.......... 
+0

ありがとうございます - 私はいくつかの進歩と私の質問を更新しました。私は基本的に完了時に新しいページにリダイレクトしますが、何らかの形で、アップロードされたファイルのリストを受け入れるメソッドにリダイレクトする必要があります。私の.Netコード。あなたは助けてくれますか?多分あなたは答えますが、私は.Netコードを取得する方法を見ることができません。 – Craig

+0

追加は新しいattachCallbacksメソッドとpreinitプロパティです。 – Craig

関連する問題