2013-12-22 76 views
0

我有以下的客戶端功能:Asp.net上傳文件使用XMLHttpRequest的C#服務器

function UploadFile() { 
    var formData = new FormData(); 
    var file = document.getElementById("file").files[0]; 
    formData.append("file", file); 
    var uploadServerSideScriptPath = "Login.aspx/Img_Upload"; 
    var xhr = new XMLHttpRequest(); 

    xhr.open("POST", uploadServerSideScriptPath, true); 
    xhr.setRequestHeader("Content-Type", "multipart/form-data"); 
    xhr.setRequestHeader("X-File-Name", file.name); 
    xhr.setRequestHeader("X-File-Size", file.size); 
    xhr.setRequestHeader("X-File-Type", file.type); 
    xhr.send(formData); 
} 

服務器端的是:

[WebMethod] 
[ScriptMethod(ResponseFormat = ResponseFormat.Json)] 
public void Img_Upload() 
{ 
    HttpContext postedContext = HttpContext.Current; 
    HttpPostedFile file = postedContext.Request.Files[0]; 

    string name = file.FileName; 
    byte[] binaryWriteArray = new 
    byte[file.InputStream.Length]; 
    file.InputStream.Read(binaryWriteArray, 0, 
    (int)file.InputStream.Length); 

    FileInfo file_Info = new FileInfo(file.FileName); 
    string ext = file_Info.Extension; 


    string file_Name = Guid.NewGuid().ToString() + "_" + DateTime.Now.Day + DateTime.Now.Month + DateTime.Now.Year + ext; 

    FileStream objfilestream = new FileStream(Server.MapPath("img//profilePIC//" + file_Name), FileMode.Create, FileAccess.ReadWrite); 
    objfilestream.Write(binaryWriteArray, 0, 
    binaryWriteArray.Length); 
    objfilestream.Close(); 

} 

我把一個破發點中Img_Upload但從來沒有命中。 我用小提琴和請求似乎確定。 有什麼想法爲什麼?

如果我使用var uploadServerSideScriptPath =「Login.aspx」,我會進入page_load函數。 問題是在該頁面上調用特定的方法。

+0

你的WebMethod也不是一成不變的解決這個問題。改變它像公共靜態無效Img_Upload() – Kadir

+0

謝謝,我試過了,但它不起作用... :( – Inbal

+0

你的網絡方法根本沒有被調用,或者你不能設置斷點? –

回答

0

嘗試clientID的對的getElementById()方法

... 

    function UploadFile() { 
     var formData = new FormData(); 
     var file = document.getElementById("<%=file.ClientID%>").files[0]; 
... 
0

我通過創建個.axd處理和使用的ProcessRequest

相關問題