2012-11-20 105 views
2

我想通過AJAX上傳文件。我搜索了很多,但發現只使用表單提交的例子。但我不能使用表單提交。我嘗試了幾個例子,但沒有達到我的服務器。當我嘗試this link時,它工作,但它又是通過表單提交。無法使用AJAX上傳文件

這裏是一段代碼相關的上下文

JS代碼

function _upload(filedata) { 
    $.ajax({ 
     url: './myURI', 
     data: filedata, 
     type: 'POST', 

     contentType: 'multipart/form-data', 
     mimeType: 'multipart/form-data', //Property added in 1.5.1 

     success: function (data) { 
      alert(data); 
     } 
    }); 
} 
$("#cpc-uploadBtn").click(function (evt) { 
       var data; 
       data = new FormData(); 
       data.append('file', $('#cpc-upload')[0].files[0]); 
       _upload(data); 

      }); 

HTML部分

<input id="cpc-upload" name="file" type="file" /> 
    <button id="cpc-uploadBtn" type="button">Upload</button> 

請幫我出這是我一直長期堅持這一點。

[編輯]

是否有任何其他方式做到這一點,而無需使用表單提交和FORMDATA。

在此先感謝

+1

什麼是你不能使用表單提交的原因是什麼? – nirazul

+0

我無法起訴表單提交,因爲它期望返回一個視圖,但我希望在請求提供後成功/失敗字符串 – devsri

回答

2

假設你使用的是Safari /火狐(只支持FormData),您需要修改您的通話$.ajax

$.ajax({ 
    url: './myURI', 
    data: filedata, 
    type: 'POST', 
    contentType: false, 
    processData: false, 
    success: function (data) { 
     alert(data); 
    } 
}); 

Seeting contentType選項設置爲false將強制jQuery的不添加爲你一個Content-Type頭(否則的邊界線將它丟失)。此外,processData標誌必須設置爲false,因此jQuery不會嘗試將您的FormData轉換爲字符串。

現在,如果你知道你的客戶正在使用HTML5,你應該嘗試使用新的JavaScript文件API - 檢查下面的文章:

在你被迫使用自定義的插件,例如所有其他情況:

0

我想目前FORMDATA對象在Safari/Firefox的唯一支持,它並沒有被採納大多數瀏覽器呢。

最近,我掙扎了很多發現了asp.net ajax的文件上傳和我目前正在使用這一個在我的項目:

https://github.com/valums/file-uploader

0

有一個小的選擇,如果你想使用

<script> 
    // wait for the DOM to be loaded 
    $(document).ready(function() 
    { 
     // bind 'myForm' and provide a simple callback function 
     $("#tempForm").ajaxForm({ 
     url:'../calling action or servlet', 
     type:'post', 
     beforeSend:function() 
     { 
     alert("perform action before making the ajax call like showing soinner image"); 
     }, 
     success:function(e){ 
     alert("data is"+e); 
      alert("now do whatever you want with the data"); 
     } 
     }); 
    }); 
</script> 

你可以找到插件here

+0

我無法使用任何插件。如果還有其他解決方法,請更新您的答案? – devsri

+0

使用我在答案中提供的鏈接。你有沒有嘗試過... –