Загрузка файла на Java с помощью сервлета - PullRequest
2 голосов
/ 04 июня 2009

Я использую javazoom для загрузки

protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException {
    PrintWriter out = null;
    JOptionPane.showMessageDialog(null, "Lets do this");
    try {
        response.setContentType("text/html;charset=UTF-8");
        try {
            MultipartFormDataRequest dataRequest = new MultipartFormDataRequest(request);
            //get uploaded files
            Hashtable files = dataRequest.getFiles();
            if (!files.isEmpty()) {
                UploadFile uploadFile = (UploadFile) files.get("filename");
                byte[] bytes = uploadFile.getData();
                String s = new String(bytes);

файлы всегда приходят как пустые. Любая помощь, пожалуйста?


Затем я попытался сделать это с помощью Apache Commons FileUpload:

 protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException {
     PrintWriter out = null;

        try {

            response.setContentType("text/html;charset=UTF-8");
            //MultipartFormDataRequest dataRequest = new MultipartFormDataRequest(request);
            //get uploaded files
            FileItemFactory factory = new DiskFileItemFactory();
            // Create a new file upload handler
            ServletFileUpload upload = new ServletFileUpload(factory);
            List files = null;
            try {
                files = upload.parseRequest(request);
            } catch (FileUploadException ex) {
                Logger.getLogger(ProcessUploadItem.class.getName()).log(Level.SEVERE, null, ex);
            }

и это не удалось на files = upload.parseRequest(request);

Есть указатели?

Извините и спасибо:)

Ответы [ 3 ]

4 голосов
/ 04 июня 2009

Я бы порекомендовал использовать для этого более популярную высококлассную библиотеку, например, Apache Commons FileUpload. С большей вероятностью он будет работать, иметь лучшие документы и иметь больше людей, которые помогут вам его использовать.

3 голосов
/ 04 июня 2009

Проверьте, что форма, отправляющая файл, имеет enctype = "multipart / form-data", определенную как здесь:

<form enctype="multipart/form-data" action="...

В противном случае файл никогда не будет загружен в соответствии с RFC1867

0 голосов
/ 04 июня 2009

Вы используете другой фреймворк, например, Тринидад или аналогичный? Обычно они включают фильтры, которые восстанавливают загруженные файлы, поэтому, когда процесс попадает на ваш сервер, запрос не содержит вложенных файлов.

...