Загрузка файлов 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", )
и может легко получить тип на основе предоставляемого расширения. Надеюсь, это поможет вам.