2011-07-27 15 views
26

OK, đây là kịch bản:Bạn có thể điền lại các đầu vào tệp sau khi gửi biểu mẫu không thành công bằng PHP hoặc JavaScript không?

Người dùng được cung cấp biểu mẫu chứa đầu vào tệp. Người dùng gửi biểu mẫu. Biểu mẫu không vượt qua xác thực/xác minh vì một lý do nào đó hoặc lý do khác. Người dùng được cung cấp biểu mẫu có lỗi được đánh dấu. Các đầu vào của tệp hiện đang trống.

Câu hỏi:

Có thể điền lại tệp đầu vào bằng đường dẫn đến tệp mà người dùng đã chọn ban đầu hay không. Một giải pháp PHP sẽ là lý tưởng, nhưng tôi cũng mở cho các giải pháp JavaScript.

+6

Đây là một bản sao của http://stackoverflow.com/questions/4205634/restoring-the-value- của một-một-đầu vào-loại-file-sau-thất bại-xác nhận –

+0

Ah có ... vô tình quên khía cạnh an ninh ... sẽ đóng câu hỏi. – diggersworld

+0

Mọi người có thể giúp tôi đóng cái này ... nó cần nhiều hơn. – diggersworld

Trả lời

38

Tôi nghĩ câu trả lời ngắn gọn ở đây là không. Bạn không thể phục hồi lại các trường tải lên tệp. Tuy nhiên, bạn có thể làm việc xung quanh nó.

Nếu tệp đã được chọn và biểu mẫu được gửi, thì bạn đã nhận được tệp. Những gì bạn có thể làm là giữ một tham chiếu đến các tập tin trên đĩa và đặt nó trong một lĩnh vực ẩn và hiển thị một tin nhắn để chỉ ra cho người dùng bạn vẫn có tập tin của họ tải lên để nó không cần phải được thay thế/tải lên lại. Khi biểu mẫu của bạn được gửi lại mà không có tệp, bạn có thể kiểm tra giá trị trường ẩn và sử dụng để lấy bản sao cục bộ của tệp mà họ đã tải lên trong lần thử cuối cùng. Cách khác để thực hiện việc này là gửi biểu mẫu qua ajax (sử dụng flash hoặc phương pháp iframe để tải tệp lên) hoặc thực hiện cuộc gọi ajax để xác thực biểu mẫu trước, và sau đó chỉ gửi như bình thường nếu hợp lệ (do đó không tải lại biểu mẫu, không mất dữ liệu trường tải lên tệp).

+2

Điều này nghe có vẻ giống như một công việc phong nha. – diggersworld

1

tôi giải quyết vấn đề này bằng let tập tin người dùng chọn tải lên như trường cuối cùng trước khi gửi biểu mẫu ^^

+0

Rất thông minh! – conradkdotcom

+0

@conradkdotcom ^^ –

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