2014-03-31 22 views
4

解決 原來,JS的順序加載在application.js中是錯誤的:使用jQuery文件上傳與CoffeeScript的 - 調整圖像使用add回調,

original: 
//= require jquery-fileupload/jquery.fileupload-process 
//= require jquery-fileupload/jquery.fileupload-image 
//= require jquery-fileupload/jquery.fileupload-validate 

correct version: 
//= require jquery-fileupload/jquery.fileupload-process 
//= require jquery-fileupload/jquery.fileupload-validate 
//= require jquery-fileupload/jquery.fileupload-image 

我試圖使用BlueImp的jquery fileuploader和我已經設法讓所有的工作,但調整大小。

我試圖調整添加回調的圖像,然後提交以避免任何服務器端處理。

我知道使用add回調會導致進程函數被跳過,但我在add回調本身手動調用它,它應該工作,但它不會。

這裏是我的代碼:

$('.jquery-fileupload').fileupload 
    dataType: "script" 
    imageMaxWidth: 480 
    imageMaxHeight: 360 
    disableImageResize: false 
    autoUpload: false 
    process:[ 
    { 
     action: 'load', 
     fileTypes: /^image\/(gif|jpeg|png)$/, 
     maxFileSize: 20000000 
    }, 
    { 
     action: 'resize', 
     maxWidth: 480, // the images are to be loaded into a pdf later so they have to be skept small 
     maxHeight: 360, 
     minWidth: 480, 
     minHeight: 360 
    }, 
    { 
     action: 'save' 
    } 
    ] 
    progress: (e, data) -> 
    progress = parseInt(data.loaded/data.total * 100, 10); 
    $('#progress_'+data.formData.token+' .bar').css('width', progress+'%') 

    add: (e, data) -> 
    unique_token = token(); 
    if (data.files && data.files[0]) 
     if(data.files[0].size < 200000000) 
     if(data.files[0].type.substr(0, data.files[0].type.indexOf('/')) != 'image') 
      alert("Please upload a file with the correct format") 
     else 
      current_data = $(this) 
      data.process(-> 
      return current_data.fileupload('process', data); //call the process function 
     ).done(-> 
      data.formData = {token: unique_token}; 
      data.context = $('.preview:last'); 
      data.context.find('.abort').click(abortUpload); 
      xhr = data.submit(); 
      data.context.data('data',{jqXHR: xhr}); 
     ) 
     else 
     alert("one of your files is over 200MB") 
    done: (e, data) -> 
    console.log(data); 

在這個任何幫助,將不勝感激,因爲我一直在敲打我的腦袋在桌子上2天直在此!

編輯 忘了提,這是我的js文件:

//= require jquery-fileupload/vendor/jquery.ui.widget 
//= require jquery-fileupload/vendor/load-image 
//= require jquery-fileupload/vendor/canvas-to-blob 
//= require jquery-fileupload/jquery.iframe-transport 
//= require jquery-fileupload/jquery.fileupload 
//= require jquery-fileupload/jquery.fileupload-ui 
//= require jquery-fileupload/jquery.fileupload-process 
//= require jquery-fileupload/jquery.fileupload-image 
//= require jquery-fileupload/jquery.fileupload-validate 
//= require jquery-fileupload/vendor/tmpl 
//= require jquery-fileupload/locale 
+0

不,不是,它不是真正的縮進。如果是這樣,我會在軌道中出現錯誤。 – dannio

+2

如果你解決了這個問題,你應該發佈一個答案並標記出來。不知道是否正確的順序是您在開始時或在編輯部分末尾放置的內容。 – raul782

+0

這真的很有幫助,我得到了處理工作感謝這篇文章。現在我發現多個上傳不起作用。你有沒有想過如何完成這項工作? – Brandon

回答

-1

解決了它原來的JS的順序加載在application.js中是錯誤的:

原:

//= require jquery-fileupload/jquery.fileupload-process 
//= require jquery-fileupload/jquery.fileupload-image 
//= require jquery-fileupload/jquery.fileupload-validate 

正確的版本:

//= require jquery-fileupload/jquery.fileupload-process 
//= require jquery-fileupload/jquery.fileupload-validate 
//= require jquery-fileupload/jquery.fileupload-image 
+0

這不提供問題的答案。要批評或要求作者澄清,在他們的帖子下留下評論 - 你總是可以評論你自己的帖子,一旦你有足夠的[聲譽](http://stackoverflow.com/help/whats-reputation),你會能夠[評論任何帖子](http://stackoverflow.com/help/privileges/comment)。 –

相關問題