2013-08-09 22 views
5

Tôi đang tải tệp lên từ phía máy khách bằng javascript ajax mà tôi chia thành các phần và trong máy chủ khi tất cả các phần được nhận tôi tham gia cùng chúng. Nhưng vấn đề là mặc dù tệp gốc và tệp được tải lên có cùng kích thước nhưng cả hai đều khác nhau. Ý tôi là file gif khi tôi xem khác nhau của nó và cùng với mã phía Video files.clientkhông thể tách tệp và gửi và sau đó tham gia vào máy chủ

var xhr = new XMLHttpRequest(); 

    var tempBlob = blob; 
    var blobOrFile = tempBlob.slice(fileDataStart, fileDataSent); 
    xhr.open('POST', '/Portfolio/UploadBinaryFiles', false); 

    xhr.setRequestHeader("Cache-Control", "no-cache"); 
    xhr.setRequestHeader("X-File-Name", fileName); 
    xhr.setRequestHeader("X-File-Size", fileSize); 
    xhr.setRequestHeader("X-File-BytesSent", fileDataSent); 
    xhr.setRequestHeader("X-File-SplitCounter", fileSplitCounter); 
    xhr.setRequestHeader("Content-Type", "multipart/form-data"); 

    xhr.send(blobOrFile); 

mã phía máy chủ để tham gia

FileStream fsSource = new FileStream(FileOutputPath, FileMode.Append); 

    // Loop through all the files with the *.part extension in the folder 
    foreach (FileInfo fiPart in diSource.GetFiles(@"*.part")) 
    { 
     // Create a byte array of the content of the current file 
     Byte[] bytePart = System.IO.File.ReadAllBytes(fiPart.FullName); 
     // Write the bytes to the reconstructed file 
     fsSource.Write(bytePart, 0, bytePart.Length); 
    } 

để lưu file được chia nhỏ trong máy chủ

// Read input stream from request 
byte[] buffer = new byte[Request.InputStream.Length]; 
int offset = 0; 
int cnt = 0; 
while ((cnt = Request.InputStream.Read(buffer, offset, 10)) > 0) 
{ 
    offset += cnt; 
} 
// Save file 
using (FileStream fs = new FileStream(fullNameNoExt, FileMode.Create)) 
{ 
    fs.Write(buffer, 0, buffer.Length); 
    fs.Flush(); 
} 
+0

Đây có phải là MVC không? WebAPI? WebForms? – Fals

+0

đây là mvc ... tất cả các mã máy chủ đều nằm trong bộ điều khiển được gọi là ajax – manishkr1608

+0

có thể trùng lặp của [Làm thế nào để thực hiện một bài đăng mẫu ASP.NET MVC Ajax với multipart/form-data?] (Http://stackoverflow.com/question/581703/how-to-do-a-asp-net-mvc-ajax-form-post-với-multipart-form-data) – Fals

Trả lời

0

Blob có một số hành vi phụ thuộc phiên bản trình duyệt như được ghi trong Mozilla Developer Network: Blob. Ngoài ra, đây là cách nó được triển khai trong IE slice method.

Điều này có nghĩa là trong các trình duyệt mới hơn cắt tham số thứ hai là không phải là một chiều dài, đó là một vị trí cuối.

Hãy xem câu hỏi này html5 chunk and webworker does not upload anything, điều này sẽ chứng minh hữu ích.

+0

không có nó không hoạt động – manishkr1608

+0

của nó chưa được giải quyết ... guys xin vui lòng giúp đỡ – manishkr1608

+1

giải quyết vấn đề kẻ ... vấn đề là tôi đã không tham gia các tập tin để thay đổi mã số foreach (FileInfo fiPart trong diSource.GetFiles (@ " * .part "). OrderBy (f => f.Thời gian sáng tạo)) – manishkr1608

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