2013-06-19 64 views
0

我使用jquery ajax上傳文件,但問題是文件上傳時沒有其內容。 FILE上傳0Kb。這裏是我的代碼:使用jquery ajax上傳沒有其內容到web服務的文件

<html> 
<head> 
<script type="text/javascript" src="http://code.jquery.com/jquery-1.8.3.min.js"></script> 
<script type="text/javascript"> 
function uploading() { 
var u = document.getElementById('uploadbr'); 
alert(u.value); 

        $.ajax({ 
         type: "POST", 
         url: "http://10.20.1.93:8080/Service1/UploadFile?fileName="+u.value, 

         success: function(data) 
         { 
          alert(data); 
         } 
        });  
       } 

</script> 
</head> 
<body> 
<form name="uploadform" encrypt="multipart/form-data"> 
<input id="uploadbr" type="file" name="upfile" size="40" /><br/> 
<input type="button" name="upbutton" value="Upload" onclick="uploading()" /> 
</form> 
</body> 
</html> 

這是我在服務器端的代碼。

[WebInvoke(Method = "POST", UriTemplate = "UploadFile?fileName={fileName}")] 
     public string UploadFile(string fileName, Stream fileContents) 
     { 
      //save file 
      try 
      { 
       string absFileName = string.Format("{0}\\FileUpload\\{1}" 
             , AppDomain.CurrentDomain.BaseDirectory 
             , fileName); 
       using (FileStream fs = new FileStream(absFileName, FileMode.Create)) 
       { 
        fileContents.CopyTo(fs); 
        fileContents.Close(); 
       } 
       return "Upload OK"; 
      } 
      catch (Exception ex) 
      { 
       return "FAIL ==> " + ex.Message; 
      } 
     } 

現在告訴我該怎麼辦?我在哪裏錯了?

回答

0

問題解決了!但謝謝你的回覆。我的腳本錯了。這是正確的。

function uploading(){ 
    var fileIn = $("#uploadbr")[0]; 
    //Has any file been selected yet? 
    if (fileIn.files === undefined || fileIn.files.length == 0) { 
     alert("Please select a file"); 
     return; 
    } 

    //We will upload only one file in this demo 
    var file = fileIn.files[0]; 
    //Show the progress bar 
    $("#progressbar").show(); 
var u = document.getElementById('uploadbr'); 
alert(u.value); 
    $.ajax({ 
     url: "http://10.20.1.93:8080/Service1/UploadFile?fileName="+u.value, 
     type: "POST", 
     data: file, 
     processData: false, //Work around #1 
     contentType: file.type, //Work around #2 
     success: function(){ 
      $("#progressbar").hide(); 
     }, 
     error: function(){alert("Failed");}, 
     //Work around #3 
     xhr: function() { 
      myXhr = $.ajaxSettings.xhr(); 
      if(myXhr.upload){ 
       myXhr.upload.addEventListener('progress',showProgress, false); 
      } else { 
       console.log("Upload progress is not supported."); 
      } 
      return myXhr; 
     } 
    }); 
} 

從這我可以上傳幾乎任何文件的最大大小64kb。

0

您不能使用XMLHttpRequest(AJAX)上傳文件。
您可以改用此插件this
此外,通過XHR2,支持通過AJAX上傳文件。例如。通過FormData對象,但不幸的是它並不支持所有/舊的瀏覽器。
Refrence1 Refrence2

+0

我沒有使用XMLHttpRequest(AJAX)。文件正在上傳,但沒有其內容。 –

+0

使用[this](http://jquery.malsup.com/form/#file-upload)可以簡化您的代碼。你可以更具體的**文件正在上傳堅果沒有其內容** – Bhavik

+0

當我選擇一個文本文件上傳,它是上傳,但不是它的內容。意思是我有一些信息保存在一個text.txt中,它在磁盤上有一些大小,但是當我上傳該文件時,它會作爲空文件上傳,並且它在磁盤上的大小變爲0kb。 –

相關問題