2011-12-30 25 views
7

Tôi đang cố gắng tải tệp lên dịch vụ WCF của mình bằng chỉ sử dụng HTML5 và JavaScript/jQuery. Các dịch vụ WCF là tự lưu trữ từ một dịch vụ Windows thay vì IIS, vì vậy tôi không nghĩ rằng tôi có thể sử dụng php hoặc aspx tải lên xử lý. Các tập tin là nhị phân và không phải là văn bản.Tải tệp lên dịch vụ WCF bằng HTML5 và/hoặc jQuery

Lý tưởng nhất, tôi muốn kết thúc với đối tượng dòng .net nơi tôi có thể ghi tệp cục bộ (phía máy chủ). Tại thời điểm này, tôi chỉ tìm kiếm tệp tải lên rất cơ bản.

Tôi có thể thực hiện giao tiếp JSON hiện tại, nhưng không thể thực hiện bước nhảy vọt lên tệp nhị phân. Hiện nay tôi đến đây và bị mắc kẹt: giao diện

dịch vụ:

[OperationContract] 
[WebInvoke(Method = "POST", UriTemplate = "SendFile")] 
string SendFile(Stream stream); 

Dịch vụ thực hiện:

public string SendFile(Stream stream) 
     { 
      // this works for strings, but i want a FileStream 
      StreamReader reader = new StreamReader(stream); 
      string data = reader.ReadToEnd(); 

      return data; 
     } 

HTML:

<input type="file" id="fileInput" onchange='sendFile();' /> 

JavaScript/jQuery:

function sendFile() { 
     submitButton.disabled = true; ; 
     setInnerText("sending file..."); 
     var file = document.getElementById('fileInput').files[0]; 
     var url = "http://10.0.1.9:8732/RainService/SendFile"; 
     $.ajax({ 
      url: url, 

      type: "POST", 
      data: file, 
     }); 
    } 

Trong giao diện điều khiển Chrome tôi nhận được một lỗi "gọi bất hợp pháp". Tôi có thể sử dụng data: file.name và điều đó sẽ hoạt động tốt tuy nhiên. Tôi cần phải gửi một dòng nội dung tập tin để tôi có thể xây dựng lại nó ở phía máy chủ.

Bất kỳ ý tưởng nào?

Trả lời

0

bạn không thể gửi tệp qua ajax. Bạn phải sử dụng một plugin có đối tượng SWF được tích hợp nơi bạn có thể tải lên một số loại tệp (bạn xác định những gì).

Vì vậy, tôi có thể đề xuất bạn sử dụng uploadify (Tôi đã sử dụng nó trong dự án của mình với MVC3).

Hoặc bạn có thể sử dụng: http://www.codeproject.com/KB/WCF/WCFDownloadUploadService.aspx

hoặc

http://www.codeproject.com/KB/WCF/UploadlargeFilesWCFHTTP.aspx cho tài liệu hơn

Tất nhiên, google có thể giúp bạn more

Các vấn đề liên quan