2011-12-27 2 views
0

Я новичок в событиях, и новый для вспышки. Мне удалось загрузить файлы, загруженные в мою папку, используя Plupload. Я использую общий обработчик (новый, что тоже!)Plupload with 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