2013-01-15 51 views
3

我想要得到一個Fine Uploader jQuery示例工作。基本上它只是一種將文件從客戶端頁面上傳到網絡服務器的方式。如何在jQuery中設置HttpPost端點,在asp.net應用程序

有一個關於如何在project's GitHub page上設置服務器端文件流的示例。

我如何從腳本調用這個HttpPost endpoint?簡單的jQuery示例如下所示:

$(document).ready(function() { 
     $('#jquery-wrapped-fine-uploader').fineUploader({ 
     request: { 
      endpoint: 'WhatToWriteHere??' 
     }, 
     debug: true 
     }); 
    }); 

那麼你在endpoint中輸入什麼?我想這將是類似Namespace.Namespace.ClassName.UploadMethod(),但我一直在擺弄它,但無法讓它工作。使用Firebug進行調試時,出現以下錯誤:

405 Method Not Allowed 
[FineUploader] xhr - server response received for 0 
The HTTP verb POST used to access path '/FineUploaderTest/Uploadfolder' is not allowed. 

任何想法?

+1

這是ASP.NET MVC? – Tigran

回答

4

你可以寫一個generic HttpHandler來處理文件上傳:

public class UploadHandler : IHttpHandler 
{ 
    public void ProcessRequest(HttpContext context) 
    { 
     var request = context.Request; 
     var formUpload = request.Files.Count > 0; 

     var xFileName = request.Headers["X-File-Name"]; 
     var qqFile = request["qqfile"]; 
     var formFilename = formUpload ? request.Files[0].FileName : null; 

     var filename = xFileName ?? qqFile ?? formFilename; 
     var inputStream = formUpload ? request.Files[0].InputStream : request.InputStream; 

     var filePath = Path.Combine(context.Server.MapPath("~/App_Data"), filename); 
     using (var fileStream = File.OpenWrite(filePath)) 
     { 
      inputStream.CopyTo(fileStream); 
     } 

     context.Response.ContentType = "application/json"; 
     context.Response.Write("{\"success\":true}"); 
    } 

    public bool IsReusable 
    { 
     get { return true; } 
    } 
} 

然後:

$(document).ready(function() { 
    $('#jquery-wrapped-fine-uploader').fineUploader({ 
     request: { 
      endpoint: '/uploadhandler.ashx' 
     }, 
     debug: true 
    }); 
}); 
+0

非常感謝您的幫助。 我嘗試添加您建議的通用處理程序,並將端點更改爲處理程序文件名,但它仍然沒有工作。 當我與螢火蟲調試,我現在得到錯誤: [FineUploader]處理1名的文件或輸入... [FineUploader]爲0 [FineUploader] XHR發送上傳請求 - 0 HTTP錯誤404接收到的服務器響應- 未找到。 所以它似乎找不到處理程序.. – Farsen

+1

請確保處理程序的名稱是正確的。另外,如果您在網址中有虛擬目錄名稱,請確定您已指定它。您可以使用'ResolveUrl'方法以正確的方式設置處理程序的路徑:'endpoint:'<%= ResolveUrl(「〜/ uploadhandler.ashx」)%>'。 –

+0

這樣做的技巧,非常感謝:) – Farsen

相關問題