Đây là cách chúng tôi thực hiện. Về cơ bản, có một trường tập tin và một trường chuỗi. JavaScript lấy tên tệp từ trình duyệt trước khi biểu mẫu được gửi. Rõ ràng, bạn cần phải xác minh rằng tên tệp ở đầu kia thực sự hiện diện (nó sẽ trống nếu người dùng đã tắt JavaScript) và bạn sẽ cần phải phân tích cú pháp chuỗi để xử lý các khác biệt nền tảng (/users/bob/file.jpg
so với C:\Documents and Settings\bob\file.jpg
)
<script>
function WriteClientFileName(){
$('ClientFileName').value = $('ClientFile').value;
}
</script>
<form enctype="multipart/form-data" onsubmit="WriteClientFileName();">
<input type="File" name="ClientFile" id="ClientFile">
<input type="hidden" name="ClientFileName" id="ClientFileName" value="">
<input type="submit">
</form>
Ngẫu nhiên, kỹ thuật này là ngôn ngữ chéo. Nó sẽ hoạt động tốt như nhau trong RoR, PHP, JSP, v.v.
Chỉnh sửa: Nếu người dùng "đang sử dụng FireBug khốc liệt" có vấn đề gì? Ngay cả khi họ không có Firebug, họ vẫn có thể đổi tên tệp trên đầu của họ và thay đổi đầu vào. Ngoài ra, bạn đang xác thực các yếu tố đầu vào của mình, phải không?
Làm thế nào đột xuất đặc trưng của ColdFusion không có chức năng cơ bản như vậy. – Teekin