powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Запись файла в базу из JSP
6 сообщений из 31, страница 2 из 2
Запись файла в базу из JSP
    #39667532
Rustam Ergashev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Изменил код под себя, заработал без ошибки но файл не закачан
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
  String contentType = request.getContentType();
  if ((contentType.indexOf("multipart/form-data") >= 0)) {
    DiskFileItemFactory factory = new DiskFileItemFactory();
    factory.setSizeThreshold(maxMemSize);  
    String root = request.getServletContext().getRealPath("/");
    factory.setRepository(new File(root));  
    ServletFileUpload upload = new ServletFileUpload(factory);
    upload.setSizeMax( maxFileSize );
    try{
        List fileItems = upload.parseRequest(request);
        Iterator i = fileItems.iterator();
        while ( i.hasNext () ){
            FileItem fi = (FileItem)i.next();
            if ( !fi.isFormField () ) {
                String fieldName = fi.getFieldName();
                String fileName = fi.getName();  
                boolean isInMemory = fi.isInMemory();
                long sizeInBytes = fi.getSize();
                file = new File( root+"/upload/" + fileName) ;
                fi.write( file ) ;
                out.println("Uploaded Filename: " + root+"/upload/" + fileName + "<br>");
            }
        }
    }catch(Exception ex) {
    System.out.println(ex);
    }
    }else{
      out.println("Error in file upload.");
  }
...
Рейтинг: 0 / 0
Запись файла в базу из JSP
    #39668890
Rustam Ergashev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сделал так по примерам. Простая форма выбора файла. Файл закачивается в сервер и записывается в базу. Если правильно выбрать файл то код работает правильно. Но если выбрать файл иного типа или большого размера чем допускаемое то код не сообщает об это. Помогите как мне организовать это, проверка размера файла и проверка типа файла. В коде указал примерно куда бы я хотел вставить проверку. Сам несколько раз попытался но без успешно.
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
<!DOCTYPE html>
<html>
<body>
Select a file to upload: 

<form action="upload.jsp" method="post" enctype="multipart/form-data">
<input type="file" name="file" size="50" />


<input type="submit" value="Upload File" />
</form>
</body>
</html>



Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
<%@ page contentType="text/html;charset=Windows-1251" language="java"%>
<%@ page import="java.sql.*, oracle.sql.*, oracle.jdbc.*, java.util.zip.*" %>
<%@ page import="myConn" %>
<%@ taglib uri="/WEB-INF/cms.tld" prefix="t"%>     
<%@ page import="java.io.*,java.util.*, javax.servlet.*" %>
<%@ page import="javax.servlet.http.*" %>
<%@ page import="org.apache.commons.fileupload.*" %>
<%@ page import="org.apache.commons.fileupload.disk.*" %>
<%@ page import="org.apache.commons.fileupload.servlet.*" %>
<%@ page import="org.apache.commons.io.output.*" %>
<%

  Connection conn = myConn.getConnection();
  conn.setAutoCommit(false);    
  File file ;
  int maxFileSize = 10000 * 1024;
  int maxMemSize = 10000 * 1024;
  String UPLOAD_DIRECTORY = "upload";
  PreparedStatement pstm = null; 
  String contentType = request.getContentType();
  String uploadPath = request.getServletContext().getRealPath("") + File.separator + UPLOAD_DIRECTORY;
  File uploadDir = new File(uploadPath);
  if (!uploadDir.exists()) {uploadDir.mkdir();}
                   
  InputStream binary_data = null;
  LinkedList closeList = new LinkedList();
  closeList.add(binary_data);
  BLOB blob=null;
  String file_name=null;
  String file_name_s=null;
    
  if ((contentType.indexOf("multipart/form-data") >= 0)) {
    DiskFileItemFactory factory = new DiskFileItemFactory();
    factory.setSizeThreshold(maxMemSize);  
    factory.setRepository(uploadDir);
    ServletFileUpload upload = new ServletFileUpload(factory);
//как здесь проверить размер файла? и сообщит о большом размере файла?
    upload.setSizeMax( maxFileSize );
    try{
        List fileItems = upload.parseRequest(request);
        Iterator i = fileItems.iterator();
        while ( i.hasNext () ){
            FileItem fi = (FileItem)i.next();
            if ( !fi.isFormField () ) {
                String fieldName = fi.getFieldName();
                String fileName = fi.getName();  
                boolean isInMemory = fi.isInMemory();
                long sizeInBytes = fi.getSize();
                
                binary_data = fi.getInputStream();
                File cfile = new File(fi.getName());
                file_name = cfile.getName();      
                file_name_s=fileName.substring(fileName.lastIndexOf("\\") + 1, fileName.length());
                
                String filePath1 = uploadPath+"/"+file_name_s;  
                 //закачка в сервер               
                file = new File(filePath1);
		file.createNewFile();
                fi.write(file) ;  
                
                if (binary_data != null) {
                  if (fileName.lastIndexOf(".") == -1 || !file_name.substring(fileName.lastIndexOf(".") + 1, file_name.length()).toLowerCase().equals("pdf")) {

                      out.println("Файл не является pdf файлом - " + uploadPath+"/" + file_name_s + "<br>");    
                       // здес должно вывести ошибку 
                      out.println("<script language='javascript'>");
                      out.println("alert('Файл не является pdf файлом');");
                      out.println("</script>");
                       // возврат в начальную страницу
                      String redirectURL = "index.jsp";
                      response.sendRedirect(redirectURL);
                  }
                  blob = BLOB.createTemporary(conn, false, BLOB.DURATION_SESSION);
                  OutputStream blob_out = blob.getBinaryOutputStream();
                  closeList.add(blob_out);
                  byte[] buf = new byte[0x10000]; //64KБ
                  int count = 0;
                  while ((count = binary_data.read(buf)) >= 0) {
                    blob_out.write(buf, 0, count);
                  }
                  blob_out.close();  
                }  
                
                
                String sql = "Insert into RU_FILES(id,id_type_file,file_name,file_data,caption) values (?,?,?,?,?) ";
                pstm = conn.prepareStatement(sql);
                pstm.setInt(1, 25);
                pstm.setInt(2, 101);
                pstm.setString(3, file_name_s);
                 pstm.setBlob(4, blob);
                pstm.setString(5, "A");
                pstm.executeUpdate();  
                conn.commit();
                out.println("Успешно загружен файл - Filename: " + uploadPath+"/" + fileName + "<br>");
            }
        }
 
    }catch(Exception ex) {
    System.out.println(ex);
    }
    }else{
      out.println("Error in file upload.");
  }
%>
...
Рейтинг: 0 / 0
Запись файла в базу из JSP
    #39668936
Rustam Ergashev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Решил с типом файлов. Изменил код на это.
Код: java
1.
2.
3.
4.
  out.println("<script type=\"text/javascript\">");
  out.println("alert('Файл не является .pdf документом! Выберите подходящий файл');");
  out.println("location='myfiles_upload.jsp';");
  out.println("</script>");


Сообщения выходит после ОК идет переход. Теперь осталось решит проблему с размером файла
...
Рейтинг: 0 / 0
Запись файла в базу из JSP
    #39669298
Фотография SQL2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Rustam Ergashev Теперь осталось решит проблему с размером файла
Если используете Tomcat, то у него в настройках есть ограничение на размер файла.
Нужно просто увеличить и рестартовать севрер.
...
Рейтинг: 0 / 0
Запись файла в базу из JSP
    #39669307
Фотография SQL2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В файле tomcat\webapps\manager\WEB-INF\web.xml
есть параметр
Код: xml
1.
2.
3.
4.
5.
6.
    <multipart-config>
      <!-- 50MB max -->
      <max-file-size>52428800</max-file-size>
      <max-request-size>52428800</max-request-size>
      <file-size-threshold>0</file-size-threshold>
    </multipart-config>


покрутите его
...
Рейтинг: 0 / 0
Запись файла в базу из JSP
    #39671894
Rustam Ergashev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Upload организовал так. Может есть где то ошибки. Но код работает. Проверка на pdf и на размер файла работает. Теперь нужно организовать просмотр блоб документа. Спасибо за помощь.
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
  String myId = (String)session.getValue("s_id_appeal"); 
  Connection conn = null;
      
  File file ;
  int maxFileSize = 3000 * 1024;
  int maxMemSize = 5000 * 1024;
  request.setCharacterEncoding("windows-1251");       
  String contentType = request.getContentType();
  String uploadPath = request.getServletContext().getRealPath("") + File.separator +"upload";
  File uploadDir = new File(uploadPath);
  if (!uploadDir.exists()) {uploadDir.mkdir();}
                   
  InputStream binary_data = null;
  LinkedList closeList = new LinkedList();
  closeList.add(binary_data);
  BLOB blob=null;
  String file_name=null;
  String file_name_s=null;   
  String fileType=null;
  long sizeInBytes=0;     
  String fileName=null;
                         
  try{
  conn = myConn.getConnection(); 
  conn.setAutoCommit(false); 
  if ((contentType.indexOf("multipart/form-data") >= 0)) {
    DiskFileItemFactory factory = new DiskFileItemFactory();
    factory.setSizeThreshold(maxMemSize);  
    factory.setRepository(uploadDir);
    ServletFileUpload upload = new ServletFileUpload(factory);

    try{
        List fileItems = upload.parseRequest(request);
        Iterator i = fileItems.iterator();
        while ( i.hasNext () ){
            FileItem fi = (FileItem)i.next(); 
            if (fi.getFieldName().equals("doc_name")) {
                fileType = fi.getString();
            } 
            else if ( !fi.isFormField () ) {
                fileName = fi.getName();  
                sizeInBytes = fi.getSize();
                binary_data = fi.getInputStream();
                File cfile = new File(fi.getName());
                file_name = cfile.getName();      
            }
        }   
        if (sizeInBytes< maxFileSize) {
           file_name_s=fileName.substring(fileName.lastIndexOf("\\") + 1, fileName.length());
           if (binary_data != null) {
             if (fileName.lastIndexOf(".") == -1 || !file_name.substring(fileName.lastIndexOf(".") + 1, file_name.length()).toLowerCase().equals("pdf")) {
                 out.println("<h2> Имя файла: " +  fileName + "</h2><br>");
                
                 out.println("<script type=\"text/javascript\">");
                 out.println("alert('Файл не является .pdf документом! Выберите подходящий файл');");
                 out.println("location='myfiles_upload.jsp';");
                 out.println("</script>");
             }
             blob = BLOB.createTemporary(conn, false, BLOB.DURATION_SESSION);
             OutputStream blob_out = blob.getBinaryOutputStream();
             closeList.add(blob_out);
             byte[] buf = new byte[0x10000]; 
             int count = 0;
             while ((count = binary_data.read(buf)) >= 0) {
               blob_out.write(buf, 0, count);
             }
             blob_out.close();  
           }  
              
        } else{  
              out.println("<script type=\"text/javascript\">");
              out.println("alert('Файл больше разрешенного размера!');");
              out.println("location='myfiles_upload.jsp';");
              out.println("</script>");
        } 
          
        String message = null;
        
        CallableStatement cs = conn.prepareCall("{ call ru_api.Add_File(?,?,?,?,?)}");
        cs.registerOutParameter(1, Types.VARCHAR);
        cs.setString(2, Util.nvl(myId));
        cs.setString(3, fileType);
        cs.setString(4, ConvIso(file_name_s));
        cs.setBlob(5, blob);
        cs.execute();
        message = cs.getString(1);

        if (message != null) {
            throw new ServletException(message);
        }          

    }catch(Exception ex) {
    System.out.println(ex);
    }
    }else{
      out.println("Error in file upload.");
  } 
 }
 finally 
		{ 
			if (conn != null) { 
				conn.close(); 
				}
        String redirectURL = "myfiles.jsp";
        response.sendRedirect(redirectURL);  
		 } 
...
Рейтинг: 0 / 0
6 сообщений из 31, страница 2 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / Запись файла в базу из JSP
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]