Загрузка файлов Struts определяет правильное расширение вместо.tmp

Я новичок в Struts и работаю над загрузкой файлов с помощью Struts.

Клиент: Это Java-программа, которая использует мое приложение Strut с помощью API Apache HttpClient и предоставляет мне файл. Клиент по необходимости иногда дает мне файл.wav и иногда файл.zip, а иногда и то и другое.

Сервер: приложение Struts, которое получило запрос от клиентского приложения и загрузило файл.

Здесь проблема возникает, когда я загружаю файл, он загружается с использованием расширения ".tmp", которое я хочу загрузить с тем же расширением, которое передал клиент.

Или есть какой-то другой способ, которым мы можем проверить, какое расширение файла отправил клиентский клиент....?

Я застрял в этой проблеме и не могу идти вперед.

Пожалуйста, найдите прилагаемый код и скажите, какие изменения мне нужно сделать:

Код сервера:

    MultiPartRequestWrapper multiWrapper=null;
    File baseFile=null;

    System.out.println("inside do post");

    multiWrapper = ((MultiPartRequestWrapper)request);


    Enumeration e = multiWrapper.getFileParameterNames();

    while (e.hasMoreElements()) {
        // get the value of this input tag
        String inputValue = (String) e.nextElement();

        // Get a File object for the uploaded File
        File[] file = multiWrapper.getFiles(inputValue);

        // If it's null the upload failed
        if (file != null) {


            FileInputStream fis=new FileInputStream(file[0]);

            System.out.println(file[0].getAbsolutePath());
            System.out.println(fis);

            int ch;
            while((ch=fis.read())!=-1){
                System.out.print((char)ch);
            }
        }

    }

    System.out.println("III :"+multiWrapper.getParameter("method"));

Код клиента:

 HttpClient client = new HttpClient();
                  MultipartPostMethod mPost = new MultipartPostMethod(url);
                        File zipFile = new File("D:\\a.zip");
                        File wavFile = new File("D:\\b.wav");
                        mPost.addParameter("recipientFile", zipFile);
                        mPost.addParameter("promptFile", wavFile);
                        mPost.addParameter("method", "addCampaign");
  statusCode1 = client.executeMethod(mPost);

на самом деле Клиент написан давно и не может быть изменен, и я хочу идентифицировать что-то на стороне сервера, только чтобы найти расширение.

Пожалуйста, помогите, спасибо.

1 ответ

Перехватчик Struts2 File Uploader при загрузке файла передает информацию о типе контента в класс Action, и можно легко найти тип файла, сравнив contentType с типом MIME.

Если вы хотите, можете создать карту с ключом в качестве типа контента и тип файла в качестве его значения, как

map.Add("image/bmp",".bmp", )
map.Add("image/gif",".gif", )
map.Add("image/jpeg",".jpeg", )

и может легко получить тип на основе предоставляемого расширения. Надеюсь, это поможет вам.

Другие вопросы по тегам