Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Java Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
 Upload files не выходит в GlassFish. Кто делал для servlet 3.0 c @MultipartConfig?  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 2465
Не могу получить на сервере.
Там новый api
request.getParts()
...
getContentType дает false. А должен: multipart/form-data.
Вадя, ты этим api делал?
5 сен 19, 17:26    [21964822]     Ответить | Цитировать Сообщить модератору
 Re: Upload files не выходит в GlassFish. Кто делал для servlet 3.0 c @MultipartConfig?  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 16795
PetroNotC Sharp,
тут смотрел
https://stackoverflow.com/questions/2422468/how-to-upload-files-to-server-using-jsp-servlet
5 сен 19, 17:44    [21964839]     Ответить | Цитировать Сообщить модератору
 Re: Upload files не выходит в GlassFish. Кто делал для servlet 3.0 c @MultipartConfig?  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 2465
вадя,
Ок.
До завтра буду изучать.
Хотя у меня не
<form action="upload" method="post" enctype="multipart/form-data">
<input type="text" name="description" />
<input type="file" name="file" />
<input type="submit" />
</form>
А руками в js
formData = new FormData()
....
Спс.
5 сен 19, 17:53    [21964843]     Ответить | Цитировать Сообщить модератору
 Re: Upload files не выходит в GlassFish. Кто делал для servlet 3.0 c @MultipartConfig?  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 2465
вадя,
Зачем тут false везде в вебе в contenttype?
jQuery.ajax({
    url: 'php/upload.php',
    data: data,
    cache: false,
    contentType: false,
    processData: false,
    method: 'POST',
    type: 'POST', // For jQuery < 1.9
    success: function(data){
        alert(data);
    }
});
5 сен 19, 18:08    [21964854]     Ответить | Цитировать Сообщить модератору
 Re: Upload files не выходит в GlassFish. Кто делал для servlet 3.0 c @MultipartConfig?  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 16795
[quote PetroNotC Sharp]Зачем тут false везде в вебе в contenttype?[/quoteхз
http://jquery.page2page.ru/index.php5/Ajax-запрос#.D0.9F.D0.B0.D1.80.D0.B0.D0.BC.D0.B5.D1.82.D1.80_dataType
как бы если только очень хочется
5 сен 19, 20:50    [21964927]     Ответить | Цитировать Сообщить модератору
 Re: Upload files не выходит в GlassFish. Кто делал для servlet 3.0 c @MultipartConfig?  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 16795
PetroNotC Sharp,

contentType:string('application/x-www-form-urlencoded')

При отправлении запроса на сервер, данные передаются в формате, указанном в contentType. По умолчанию
используется 'application/x-www-form-urlencoded', который подходит в большинстве случаев. Если указать этот
параметр явно, то он будет передан серверу (даже если туда не были отправлены никакие данные). Стоит
отметить, что данные всегда будут передаваться в кодировке UTF-8. Это стоит учитывать при обработке данных
на стороне сервера
.

но надо явно указать multipart/form-data
5 сен 19, 22:44    [21964975]     Ответить | Цитировать Сообщить модератору
 Re: Upload files не выходит в GlassFish. Кто делал для servlet 3.0 c @MultipartConfig?  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 2465
вадя,

Не вышло.
Если ставить false (рекомендуют) то у меня ошибка выше описана.
Если ставить
contentType: "multipart/form-data",


То ошибка уже
https://stackoverflow.com/questions/36005436/the-request-was-rejected-because-no-multipart-boundary-was-found-in-springboot
6 сен 19, 14:13    [21965367]     Ответить | Цитировать Сообщить модератору
 Re: Upload files не выходит в GlassFish. Кто делал для servlet 3.0 c @MultipartConfig?  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 2465
вадя,
То есть по докам должно false и тогда хром сам разбирается.
Но у меня при отправке в логах тоже false и в сервлете получаю false.
Потом райзе.
Как в сервлете взять просто сырое все что пришло?
Счас тесты код выложу. Может кто попробует.
6 сен 19, 14:16    [21965372]     Ответить | Цитировать Сообщить модератору
 Re: Upload files не выходит в GlassFish. Кто делал для servlet 3.0 c @MultipartConfig?  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 16795
PetroNotC Sharp,

а если через форм попробовать?

   <form action="UpLoad" method="POST" id="upl" enctype="multipart/form-data">
            <input type="file" name="fileName" />
            <input type="submit" />
    </form>


и типа такого
 protected void doPost(HttpServletRequest request, HttpServletResponse response) {


        try {

            Part filePart = request.getPart("fileName"); // Retrieves <input type="file" name="file">
            InputStream filecontent = filePart.getInputStream();

            byte[] buffer = new byte[filecontent.available()];
            filecontent.read(buffer);
            
            File targetFile = new File(......... + File.separator + request.getPart("fileName").getSubmittedFileName());

            try (OutputStream outStream = new FileOutputStream(targetFile)) {
                outStream.write(buffer);
                outStream.flush();
            }
             response.sendRedirect("/" ..............);
        } catch (IOException | ServletException ex) {
            Logger.getLogger(UpLoad.class.getName()).log(Level.SEVERE, null, ex);
        }

    }
6 сен 19, 14:21    [21965378]     Ответить | Цитировать Сообщить модератору
 Re: Upload files не выходит в GlassFish. Кто делал для servlet 3.0 c @MultipartConfig?  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 2465
Тест с ошибкой.
- запуск, выбрать в эксплорере пару фоток и нажать кнопу отправить на сервер
- в сервлете райзе при доступе к ним (GlassFish)
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta name="robots" content="noindex,nofollow" />
<meta name="viewport" content="width=device-width, ainitial-scale=1.0">

<SCRIPT src="<%= request.getContextPath() %>/js/vendor/jquery.min.js"></SCRIPT>
<SCRIPT src="./js/photo-upload.js"></SCRIPT>

<title>Редактор альбома</title>
</head>
<body>
<div>
	<p>Images</p>
	<input type="file" assept="image/png, image/jpeg" multiple />
	<input type="button" onclick="buttonClick()"; />
</div>
</body>
</html>
...... 
window.onload = function() {
	//------- check HTML5 file API----------- 
	if (window.File && window.FileReader && window.FileList && window.Blob){
		
	}
	else
	{
		alert('The File APIs HTML5 are not fully supported in this browser.');
	}
};

function buttonClick() {
	var files = $('input[type=file]')[0].files;
	if (!files) {alert('No selected files'); return;}
	var formdata = new FormData();
	for(var i=0; i<files.length; i++){
		formdata.append('image_'+i, files[i]);
	}
	
	$.ajax({
		 url: 'http://localhost:8080/photo-edit/uploads',
		 type: "POST",
		 enctype:"multipart/form-data",
		 data: formdata,
		 timeout: 2000,
		 contentType: false,
		 processData: false,
		 cache: false,
		 error: function(x, t, m){
			 alert("Error: " + t);
		 }	 
	 });
}
6 сен 19, 14:24    [21965380]     Ответить | Цитировать Сообщить модератору
 Re: Upload files не выходит в GlassFish. Кто делал для servlet 3.0 c @MultipartConfig?  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 2465
вадя
а если через форм попробовать?
а как, если я в динамике в openDialog выделяю 500 фоток и отправляю на сервер.
6 сен 19, 14:26    [21965381]     Ответить | Цитировать Сообщить модератору
 Re: Upload files не выходит в GlassFish. Кто делал для servlet 3.0 c @MultipartConfig?  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 16795
PetroNotC Sharp
эксплорере пару фоток и нажать кнопу отправить на сервер
а по одной?
6 сен 19, 14:28    [21965383]     Ответить | Цитировать Сообщить модератору
 Re: Upload files не выходит в GlassFish. Кто делал для servlet 3.0 c @MultipartConfig?  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 2465
вадя
а если через форм попробовать?
счас попробую, но это не мой юзкейс
6 сен 19, 14:28    [21965384]     Ответить | Цитировать Сообщить модератору
 Re: Upload files не выходит в GlassFish. Кто делал для servlet 3.0 c @MultipartConfig?  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 16795
PetroNotC Sharp
счас попробую, но это не мой юзкейс
это для диагностики
6 сен 19, 14:30    [21965385]     Ответить | Цитировать Сообщить модератору
 Re: Upload files не выходит в GlassFish. Кто делал для servlet 3.0 c @MultipartConfig?  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 2465
вадя
PetroNotC Sharp
счас попробую, но это не мой юзкейс
это для диагностики
да. Сделаю конечно. Отпишусь.
6 сен 19, 14:37    [21965390]     Ответить | Цитировать Сообщить модератору
 Re: Upload files не выходит в GlassFish. Кто делал для servlet 3.0 c @MultipartConfig?  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 2465
Это третий кусок к тесту где у меня райзе. Сервлет.

package uploadfiles;

import java.io.IOException;
import java.util.Collection;
import java.util.Collections;
import java.util.Enumeration;

import javax.servlet.ServletException;
import javax.servlet.ServletInputStream;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;

@MultipartConfig
@WebServlet("/uploads")
public class UploadFiles extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    public UploadFiles() {
        super();
    }

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.getWriter().append("Served at: ").append(request.getContextPath());
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);

		System.out.println("----> Post request.getContentType(... "+ request.getContentType());	//Post request.getContentType(... false
		System.out.println("----> request.getContentLengthLong(... "+ request.getContentLengthLong()); //request.getContentLengthLong(... 1413

		//ServletInputStream stream = request.getInputStream();

		/* errrorrrr
		 * 
		 * 2019-09-05T17:56:49.347+0300|Warning: StandardWrapperValve[uploadfiles.UploadFiles]: Servlet.service() for servlet uploadfiles.UploadFiles threw exception
			javax.servlet.ServletException: The request content-type is not a multipart/form-data
			at org.apache.catalina.fileupload.Multipart.getParts(Multipart.java:172)
		 */
		Collection<Part> p = request.getParts();
		for(Part i : p){
			System.out.println("----> Post "+ p);	
		};
		
		
	}

}
6 сен 19, 14:49    [21965397]     Ответить | Цитировать Сообщить модератору
 Re: Upload files не выходит в GlassFish. Кто делал для servlet 3.0 c @MultipartConfig?  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 2465
Вадя, в твоем юз кейсе без райзе срабатывает это
Collection<Part> p = request.getParts();
Что дальше?
6 сен 19, 15:30    [21965417]     Ответить | Цитировать Сообщить модератору
 Re: Upload files не выходит в GlassFish. Кто делал для servlet 3.0 c @MultipartConfig?  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 2465
И в заголовке ДЛЯ ОДНОГО ФАЙЛА пишется при форме
multipart/..... ;boundary=----3453e454e
6 сен 19, 15:32    [21965419]     Ответить | Цитировать Сообщить модератору
 Re: Upload files не выходит в GlassFish. Кто делал для servlet 3.0 c @MultipartConfig?  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 2465
Счас два фото в статике пробую.
6 сен 19, 15:34    [21965420]     Ответить | Цитировать Сообщить модератору
 Re: Upload files не выходит в GlassFish. Кто делал для servlet 3.0 c @MultipartConfig?  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 2465
PetroNotC Sharp
Счас два фото в статике пробую.
ОК. Работает!!!
Вадя, значит дело не на бэке а на фронте.
Помогай!
6 сен 19, 15:37    [21965422]     Ответить | Цитировать Сообщить модератору
 Re: Upload files не выходит в GlassFish. Кто делал для servlet 3.0 c @MultipartConfig?  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 16795
PetroNotC Sharp,
вот так
        <form action="UpLoad" method="POST" id="upl" enctype="multipart/form-data">
            <input type="file" name="fileName" multiple="multiple" />
            <input type="submit" />
        </form>


 @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)  {

        try {
         
            Collection<Part> p = request.getParts();
            p.forEach((Part _item) -> {
                try {

                    System.out.println("----> Post " + _item.getSubmittedFileName());
                    InputStream filecontent = _item.getInputStream();
                    //
                    byte[] buffer = new byte[filecontent.available()];
                    filecontent.read(buffer);
                    Files.createDirectories(Paths.get(Singleton.getPathToPic() + "excel"));
                    File targetFile = new File(Singleton.getPathToPic() + "excel" + File.separator + _item.getSubmittedFileName());
                    try (OutputStream outStream = new FileOutputStream(targetFile)) {
                        outStream.write(buffer);
                        outStream.flush();
                    }

                   

                } catch (IOException ex) {
                    Logger.getLogger(UpLoad.class.getName()).log(Level.SEVERE, null, ex);
                }

            });
        } catch (IOException | ServletException ex) {
            Logger.getLogger(UpLoad.class.getName()).log(Level.SEVERE, null, ex);
        }
        
        try {
            response.sendRedirect("/" + com.Singleton.PORTAL + "/page1.jsp");
        } catch (IOException ex) {
            Logger.getLogger(UpLoad.class.getName()).log(Level.SEVERE, null, ex);
        }
    }


только это
Files.createDirectories(Paths.get(Singleton.getPathToPic() + "excel"));
FSingleton.getPathToPic() + "excel"
замени на своё
загружает множество файлов
томкат, хром
6 сен 19, 15:41    [21965425]     Ответить | Цитировать Сообщить модератору
 Re: Upload files не выходит в GlassFish. Кто делал для servlet 3.0 c @MultipartConfig?  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 16795
PetroNotC Sharp
Вадя, значит дело не на бэке а на фронте.
Помогай!
дай время
6 сен 19, 15:42    [21965426]     Ответить | Цитировать Сообщить модератору
 Re: Upload files не выходит в GlassFish. Кто делал для servlet 3.0 c @MultipartConfig?  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 16795
вадя,

тебе с jquery?
6 сен 19, 15:45    [21965430]     Ответить | Цитировать Сообщить модератору
 Re: Upload files не выходит в GlassFish. Кто делал для servlet 3.0 c @MultipartConfig?  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 2465
вадя
вадя,

тебе с jquery?
так меньше кода. Смотри у меня выше.
6 сен 19, 15:47    [21965432]     Ответить | Цитировать Сообщить модератору
 Re: Upload files не выходит в GlassFish. Кто делал для servlet 3.0 c @MultipartConfig?  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 2465
вадя
PetroNotC Sharp
Вадя, значит дело не на бэке а на фронте.
Помогай!
дай время
не срочно. Хоть после выходных.
6 сен 19, 15:48    [21965433]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
Все форумы / Java Ответить