У меня есть страница JSP, в которой у меня есть поле ввода файла, из которого я просматриваю файл csv, а затем загружаю его на сервер. Я использую метод = "POST" и ENCTYPE = 'multipart/form-data' в форме, в которой присутствует это поле ввода файла.Не удается получить содержимое файла на сервере во время загрузки
С сервлета (в сервлете приложения) Я использую API-интерфейс API-ServletFileUpload API для API-интерфейса API. После получения списка FileItem из метода parseRequest (запроса) этого API я не могу получить имя файла и его содержимое с помощью методов getName(), getString() API FileItem.
Необходимо знать, что я делаю неправильно или какие-либо изменения в моем подходе, которые заставят мое приложение работать. Любые указатели на это будут полезны.
Спасибо заранее!
пытались также следующий код в методе doPost главного сервлета приложения: -
`Перечисление enumAttrib = request.getAttributeNames();
while(enumAttrib.hasMoreElements()) {
String attribName = (String)(enumAttrib.nextElement());
System.out.println("DEBUG:---------AttribName = " + attribName);
System.out.println("DEBUG:---------AttribValue=" + request.getAttribute(attribName));
}`
Вывод, который был напечатан был:
DEBUG:---------AttribName = weblogic.servlet.network_channel.port
DEBUG:---------AttribValue=9703
Не знаю, должен ли параметр запроса возвращать только этот или другие атрибуты также.
также попытался следующий код:
if (ServletFileUpload.isMultipartContent(request)) {
System.out.println("Inside ApplicationMainServlet request is multipart ");
// Create a factory for disk-based file items
FileItemFactory factory = new DiskFileItemFactory();
// Create a new file upload handler
ServletFileUpload upload = new ServletFileUpload(factory);
try
{
// Parse the request
List /* FileItem */items = upload.parseReques(request);
// Process the uploaded items
Iterator iter = items.iterator();
while (iter.hasNext())
{
FileItem item = (FileItem) iter.next();
String name = item.getFieldName();
System.out.println("ApplicationMainServlet name: "+item.getFieldName() + ", val: "+item.getString());
if (!item.isFormField())
{
//Item is a file
try{
InputStream is = item.getInputStream();
InputStreamReader ir = new InputStreamReader(is);
BufferedReader br = new BufferedReader(ir);
System.out.println("br : " + br);
String fileContent = "";
String strLine;
while((strLine = br.readLine()) != null){
System.out.println("strLine : " + strLine);
if(fileContent != null)
{
fileContent = fileContent+ strLine + "\n";
}
else
{
fileContent = strLine + "\n";
}
}
System.out.println("fileContent : " + fileContent);
} catch(Exception e){
e.printStackTrace();
}
System.out.println("ApplicationMainServlet file name " + item.getName()+",size "+item.getSize());
}
}
Не могли бы вы отправить код для загрузки файла? – Casey
public void doProcess (запрос HttpServletRequest, ответ HttpServletResponse) throws ServletException, IOException { – Khushal
FileItemFactory factory = new DiskFileItemFactory(); ServletFileUpload upload = новый ServletFileUpload (заводская); Список элементов = upload.parseRequest (запрос); Итератор iter = items.iterator(); while (iter.hasNext()) {FileItem item = (FileItem) iter.next(); if (! item.isFormField()) {// Выход, который печатается в журналах, равен Val = (blank) и size = 0 System.out.println ("ApplicationMainServlet: name =" + item.getFieldName() + ", val = "+ item.getString() +", размер файла = "+ item.getSize()); request.setAttribute (имя, элемент); // больше кода для последующего использования. – Khushal