2009-09-17 31 views
26

Tôi đã tự hỏi liệu có cách nào để sử dụng jQuery để tìm ra kích thước tệp cho một tệp PDF mà tôi đang liên kết đến một trang web hay không.Tìm kích thước của tệp đằng sau liên kết tải xuống với jQuery

Tôi muốn thực hiện để di chuột qua liên kết tải xuống, một hộp phương thức bật lên cho biết kích thước tệp của tệp PDF. Tôi có thể làm bit thứ hai, điều duy nhất tôi muốn biết là làm thế nào để tìm ra kích thước tập tin. Tôi không biết nếu jQuery có khả năng này. Nếu không thì quá tệ tôi đoán ..

Cổ vũ trước.

+0

trùng lặp có thể xảy ra [Nhận kích thước của tập tin yêu cầu qua ajax] (http://stackoverflow.com/questions/1484303/get-size-of-file- yêu cầu-qua-ajax) – user2284570

Trả lời

46

Tôi cảm thấy như thế này là quá nhiều để làm khách hàng, nhưng tôi không biết chi tiết về ứng dụng của bạn, vì vậy giả sử bạn phải làm điều đó với jQuery ... bạn có thể thực hiện yêu cầu HEAD và xem tại tiêu đề Content-Length. Trước đó, tôi đã đề xuất plugin jqHead, nhưng sau khi tôi cố gắng sử dụng nó, tôi thấy rằng nó đã bị hỏng.

Dưới đây là một ví dụ làm việc mà không phụ thuộc vào bất kỳ plugin thêm: http://host.masto.com/~chris/so/jqhead.html

Thịt của nó rất đơn giản:

var request; 
    request = $.ajax({ 
    type: "HEAD", 
    url: $("#url").val(), 
    success: function() { 
     alert("Size is " + request.getResponseHeader("Content-Length")); 
    } 
    }); 
+0

Tôi về cơ bản viết một câu trả lời cho thấy một yêu cầu HEAD, nhưng bạn đánh bại tôi quá nó. Có thể giúp hiển thị mã để làm điều đó với/không có plugin. – eyelidlessness

+0

Tuyệt vời, nhưng các nhà phát triển cần lưu ý rằng quyền riêng tư của miền diễn ra tại đây :) – ValeriiVasin

+0

Để biết những gì @InviS đang nói, hãy thử sử dụng 'http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min. js', nằm trên một tên miền khác – vol7ron

0

Nếu bạn biết kích thước tệp trước, bạn có thể đặt nó trong thuộc tính tiêu đề của liên kết tải xuống. Bạn cũng có thể sử dụng jQuery để hiển thị cửa sổ bật lên tùy chỉnh.

Nếu không, không có cách nào để chỉ nhận kích thước tệp (độ dài nội dung) của URL mà không thực sự tải xuống toàn bộ nội dung AFAIK.

0

Cách duy nhất mà tôi có thể nghĩ đến để làm điều này là tạo một dịch vụ web sẽ trả lại cho bạn các tệp của tệp PDF.

12

Dưới đây là đoạn làm việc để tìm ra kích thước tập tin trong javascript mà không đi tới máy chủ, nếu bạn định tải tệp lên máy chủ.

Ý tưởng này giúp hạn chế kích thước tệp trước khi tải tệp lớn lên máy chủ.

<input type="file" id="loadfile" /> 
<input type="button" value="find size" onclick="findSize()" /> 
<script type="text/javascript"> 
    function findSize() { 
     var fileInput = $("#loadfile")[0]; 
     alert(fileInput.files[0].size); // Size returned in bytes. 
    }  
</script> 
+0

@Kyle Sevenoaks: Xin lỗi về điều đó Kyle. , Tôi quay lại với bạn :) – Skurmedel

+0

Heh, đừng lo lắng :) – Kyle

+2

Điều đó không hiệu quả đối với tôi trong IE8 - Firefox vẫn ổn. – wdanda

0

Trong câu trả lời ở trên, Chrome 21 và Safari 6 không có thành viên tệpSize nhưng có kích thước. Sử dụng:

fileInput.files [0] .size

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