2011-11-04 31 views
7

Tiếp theo mã java đang được sử dụng để tải về một tập tin đăng nhập yêu cầu throgh một ứng dụng web:không gian trống trong vấn đề tên tập tin khi tải tập tin

protected HttpServletResponse response; 
.... 

    response.setContentType("application/octet-stream"); 
    String filename = OrgName + ".log"; 
    response.setHeader("Content-Disposition", "attachment; filename= " + filename); 
    OutputStream os = response.getOutputStream(); 
    os.write(getFile()); 
    os.close(); 

Vấn đề xảy ra khi OrgName chứa một không gian như "XYZ Pvt Ltd", trong tệp này sẽ được tải xuống với tên "Xyz" thay vì "Xyz Pvt Ltd.log". Phần tên sau khi không gian thứ nhất bị bỏ qua. Xin lưu ý rằng tệp được tải xuống chính xác, nó chỉ là tên không hiển thị chính xác. Có điều gì tôi đang làm sai? hoặc là một hành vi tiêu chuẩn?

Môi trường: Struts 2, Jboss 5.1.0, Mozilla Firefox 3.5.3

+0

Tôi nghĩ là phụ thuộc vào trình duyệt. Chỉ cần thử trong IE (8.0) Chrome và nó đã hoạt động. – Santosh

Trả lời

13

Tôi nghĩ rằng tôi đã tìm thấy sự cố của bạn. Chỉ cần đặt chuỗi tên tệp là được trích dẫn

response.setHeader("Content-Disposition","attachment; filename=\"" + filename + "\""); 

Điều này sẽ giải quyết được sự cố của bạn.

+0

Có, Nó hoạt động. Cảm ơn rất nhiều :) –

0

Tôi nghĩ rằng bạn sẽ phải sử dụng một mã hóa cho các không gian Bạn có thể nhìn vào bộ mã hóa base64 apache, tôi nhớ rằng không gian được mã hóa đến% 20% và do đó khi giải mã, bạn sẽ có thể truy xuất tên tệp bằng dấu cách.

+0

Nếu bạn làm điều đó, nó sẽ mất% 20% như một phần của tên tệp và sẽ không hiển thị nó dưới dạng dấu cách. – Santosh

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