powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Запись файла в базу из JSP
31 сообщений из 31, показаны все 2 страниц
Запись файла в базу из JSP
    #39662969
Rustam Ergashev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Делаю форму для записи файлов в базу.
Сервер Weblogic, база Oracle, делаю на JSP (так получилось).
запись в базу простых данных получается а вот в BLOB поле записать не получается.
вот форма
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
<div id="formHeader"><span>Заполнены формы прикрепления файлов</span></div>
            <div id="formBody">
                <form name="fm" method=post enctype="multipart/form-data">
                    <p><b><span>Файлы для прикрепления</span></b></p>
                    <table>
                      <tr>
                         <td colspan=2 height=5px>
                      <tr>
                         <td>Копия паспорта <i>*</i>
                         <td><input type="file" name=file_name accept=".pdf" size=70 r=1>   
                      <tr>
                         <td colspan=2 height="5px">
                      <tr>
                         <td colspan=2 align="center"><hr>
                      <tr>
                         <td colspan=2 class=tip> Размер загружаемых файлов не должен превышать 1 Мб 
                    </table>
                    <div style="padding-left:35px; text-align:right;" >
                        <button name="SaveFile1" onclick="SaveFile()">Отправить</button> 
                    </div>
                </form>
            </div>            


и он обращается в этот код
Код: 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.
    Connection conn = myConn.getConnection();
    conn.setAutoCommit(false);
    ResultSet rs=null;
    PreparedStatement psmt=null;
    FileInputStream fis;  
    try{                                    
      File image=new File(request.getParameter("file_name"));
      psmt=conn.prepareStatement("insert into ru_files(id,id_appeal,id_type_file,file_name,file_data) values (?,?,?,?,?)");
      psmt.setInt(1,3);
      psmt.setInt(2,141);
      psmt.setInt(3,1);
      psmt.setString(4,request.getParameter("file_name"));
      fis=new FileInputStream(image);
      psmt.setBinaryStream(5, (InputStream)fis, (int)(image.length()));
      int s = psmt.executeUpdate();
      conn.commit();
      if(s>0) {
          %>  <b><font color="Blue"><% out.println("Image Uploaded successfully !"); %> </font></b><%
      }
      else {
        out.println("unsucessfull to upload image.");
      }
      conn.close();
      psmt.close();
      }catch(Exception ex){
      out.println("Error in connection : "+ex);
    }


код из просторов интернета, ранше не работал с блоб полем. нашел другие примеры ( https://o7planning.org/ru/10839/uploading-and-downloading-files-from-database-using-java-servlet ) с использованием part : request.getParts() но у меня не работает наверно версия JDK старая. Можете помочь простым примером. Так как делаю в JSP, web.xml не могу трогать.
...
Рейтинг: 0 / 0
Запись файла в базу из JSP
    #39663370
Rustam Ergashev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Что я делаю не так?
...
Рейтинг: 0 / 0
Запись файла в базу из JSP
    #39663409
Фотография SQL2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как-то все сложно у вас... Я делал загрузку в БД через Blob, все замечательно работает.
...
Рейтинг: 0 / 0
Запись файла в базу из JSP
    #39663411
Фотография Valentin Kolesnikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Rustam ErgashevЧто я делаю не так?

https://gist.github.com/madan712/4024557

conn.commit();

Вроде бы не нужен. Должно хватить psmt.executeUpdate();

С уважением, Валентин
...
Рейтинг: 0 / 0
Запись файла в базу из JSP
    #39663420
Фотография SQL2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Загружаем файл
Код: java
1.
<input type="file" id="file_control" name="file" accept=".xls"/>


Передаем в контроллер
Код: java
1.
2.
	public ModelAndView uploadFileHandler(@RequestParam("file") MultipartFile file,
           HttpServletRequest request) throws IOException, ZipException, SQLException {


Файл в strim
Код: java
1.
2.
          stream = file.getInputStream();
          fbody = toByte(stream);


Стрим в байтовый массив
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
  private byte[] toByte(InputStream is) throws IOException{ 
      ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
      int reads = is.read(); 
      while(reads != -1){ 
        baos.write(reads); 
        reads = is.read(); 
      } 
      return baos.toByteArray(); 
    }  


затем массив пишем как Blob в БД
Код: java
1.
pstm.setBlob(4, blobFile);


Может что и пропустил, но принцип понятен?
...
Рейтинг: 0 / 0
Запись файла в базу из JSP
    #39663452
Rustam Ergashev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В weblogic логах нашел такую ошибку
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
java.io.FileNotFoundException: d:\1.jpg (No such file or directory)
	at java.io.FileInputStream.open(Native Method)
	at java.io.FileInputStream.<init>(FileInputStream.java:146)
	at jsp_servlet.__myfiles_add_new._jspService(__myfiles_add_new.java:187)
	at weblogic.servlet.jsp.JspBase.service(JspBase.java:35)
	at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:280)
	at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:254)
	at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:136)
	at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:346)
	at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:243)
	at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3432)
	at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3402)
	at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
	at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
	at weblogic.servlet.provider.WlsSubjectHandle.run(WlsSubjectHandle.java:57)
	at weblogic.servlet.internal.WebAppServletContext.doSecuredExecute(WebAppServletContext.java:2285)
	at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2201)
	at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2179)
	at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1572)
	at weblogic.servlet.provider.ContainerSupportProviderImpl$WlsRequestExecutor.run(ContainerSupportProviderImpl.java:255)
	at weblogic.work.ExecuteThread.execute(ExecuteThread.java:311)
	at weblogic.work.ExecuteThread.run(ExecuteThread.java:263)
...
Рейтинг: 0 / 0
Запись файла в базу из JSP
    #39663458
Rustam Ergashev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вот файл jsp
Код: html
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.
<%@ page contentType="text/html;charset=Windows-1251" language="java"%>
<%@ page import="java.sql.*, oracle.sql.*, oracle.jdbc.*, java.io.*, java.util.zip.*, java.util.*,org.apache.commons.fileupload.*" %>
<%@ page import="uz.sql.myConn" %>
<%@ taglib uri="/WEB-INF/cms.tld" prefix="t"%>     
<%
//-------------------------------------------------------------------------------------
%>
<t:page><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>  
      <title>Онлайн заявки</title>
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
      <meta http-equiv="Pragma" content="no-cache">
		  <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <script type="text/javascript" src="js/jquery.js"></script>
      <script type="text/javascript" src="js/jquery.keyfilter-1.7.js"></script>
      <script type="text/javascript" src="js/main.js"></script>
      <link href="css/mystyle.css" type="text/css" rel="stylesheet"/>
</head>
<body>

          <div id=content>
            <div id="formHeader"><span>Заполнены формы прикрепления файлов</span></div>
            <div id="formBody">
                <form name="fm" method=post enctype="multipart/form-data">
                    <p><b><span>Файлы для прикрепления</span></b></p>
                    <table>
                      <tr>
                         <td colspan=2 height=5px>
                      <tr>
                         <td>Копия паспорта <i>*</i>
                         <td><input type="file" name=file_name accept=".pdf" size=70 r=1>   
                      <tr>
                         <td colspan=2 height="5px">
                      <tr>
                         <td colspan=2 align="center"><hr>

                    </table>
                    <div style="padding-left:35px; text-align:right;" >
                        <button name="SaveFile1" onclick="SaveFile()">Отправить</button> 
                    </div>
                </form>
            </div>            

     </div>
</body>
</html>
</t:page>
<t:requests>
  <t:request name="SaveFile"><%

        Connection conn = myConn.getConnection();
        conn.setAutoCommit(false);    
        String sql = "Insert into RU_FILES(id,id_appeal,id_type_file,file_name,file_data) values (?,?,?,?,?) ";
        File file = new File("d:\\1.jpg");
        FileInputStream fis = new FileInputStream(file);
        PreparedStatement pstm = conn.prepareStatement(sql);
        pstm.setInt(1, 15);
        pstm.setInt(2, 11);
        pstm.setInt(3, 12);
        pstm.setString(4, request.getParameter("file_name"));
        pstm.setBinaryStream(5, (InputStream)fis, (int) file.length());
        pstm.executeUpdate();                                              
        conn.commit();   
        

         
 %></t:request>


</t:requests>    
...
Рейтинг: 0 / 0
Запись файла в базу из JSP
    #39663462
Rustam Ergashev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вот код который вызывает функцию SaveFile из main.js
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
function SaveFile() {
    $('#userMessage').text('');
    
    if (!verifyInputs()) {
        return;
    }

    $.ajax({
        dataType: 'html',
        data: {
            request: 'SaveFile',
            file_name: document.fm.file_name.value
        },
        success: function(data) {
            $('#userMessage').addClass('info').text(data);  
            alert('Спосибо, Ваша заявка принята!');
            document.location = "index.jsp";
        }
    });
}
...
Рейтинг: 0 / 0
Запись файла в базу из JSP
    #39663478
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL2008Как-то все сложно у вас... Я делал загрузку в БД через Blob, все замечательно работает.он без контроллеров)))
...
Рейтинг: 0 / 0
Запись файла в базу из JSP
    #39663529
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Rustam ErgashevЧто я делаю не так?
Код: java
1.
File image=new File(request.getParameter("file_name"));



- так файл не получите. Почитайте на тему "jsp file upload". Полученный при загрузке файл висит в памяти (если маленький) или в tmp директории сервера приложений, поэтому читать его надо по другому (для более качественных советов уточните версию JSP/сервлетов, которую поддерживает Ваш сервер).
...
Рейтинг: 0 / 0
Запись файла в базу из JSP
    #39663551
Фотография SQL2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123SQL2008Как-то все сложно у вас... Я делал загрузку в БД через Blob, все замечательно работает.он без контроллеров)))
Можно считать это
Код: java
1.
function SaveFile()


контроллером.
Запрос обрабатывает, на страницу
Код: java
1.
document.location = "index.jsp";


редиректит.
...
Рейтинг: 0 / 0
Запись файла в базу из JSP
    #39663933
Rustam Ergashev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
изменил код на это, и поместил фал 1.jpg в корневом каталоге. все сохранилось.
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
<t:request name="SaveFile"><%
        Connection conn = myConn.getConnection();
        conn.setAutoCommit(false);    
        String sql = "Insert into RU_PHYS_CREDIT_FILES(id,id_appeal,id_type_file,file_name,file_data,caption) values (?,?,?,?,?,?) ";
        //File file = new File(request.getParameter("file_name")); 
        File file = new File("1.jpg");
        String filepath=file.getPath();
        //String filepath=file.getAbsolutePath();
        FileInputStream fis = new FileInputStream(filepath);
        PreparedStatement pstm = conn.prepareStatement(sql);
        pstm.setInt(1, 17);
        pstm.setInt(2, 11);
        pstm.setInt(3, 121);
        pstm.setString(4, request.getParameter("file_name"));
        pstm.setBinaryStream(5, (InputStream)fis, (int) file.length());
        pstm.setString(6, "A");
        pstm.executeUpdate();                                              
        conn.commit();   
 %></t:request>



но как теперь сохранить файл который выбирает пользователь через формы? я поменял код для этого но вернул ошибку
Код: java
1.
java.io.FileNotFoundException: d:\e1.jpg (No such file or directory)


вот код
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
<t:request name="SaveFile"><%
        Connection conn = myConn.getConnection();
        conn.setAutoCommit(false);    
        String sql = "Insert into RU_FILES(id,id_appeal,id_type_file,file_name,file_data,caption) values (?,?,?,?,?,?) ";
        //File file = new File(request.getParameter("file_name")); 
        String filepath=file.getPath();
        //String filepath=file.getAbsolutePath();
        FileInputStream fis = new FileInputStream(filepath);
        PreparedStatement pstm = conn.prepareStatement(sql);
        pstm.setInt(1, 17);
        pstm.setInt(2, 11);
        pstm.setInt(3, 121);
        pstm.setString(4, request.getParameter("file_name"));
        pstm.setBinaryStream(5, (InputStream)fis, (int) file.length());
        pstm.setString(6, "A");
        pstm.executeUpdate();                                              
        conn.commit();   
  %></t:request>


как можно указать правильный путь к файлу?
...
Рейтинг: 0 / 0
Запись файла в базу из JSP
    #39664122
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Rustam Ergashevкак можно указать правильный путь к файлу?
Не нужен никакой путь к файлу
Путь к файлу - это на компьютере КЛИЕНТА. А Вам нужен сам файл.

Поискать в гугле пример, Вам уже советовали.
...
Рейтинг: 0 / 0
Запись файла в базу из JSP
    #39664200
Rustam Ergashev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Leonid KudryavtsevRustam Ergashevкак можно указать правильный путь к файлу?
Не нужен никакой путь к файлу
Путь к файлу - это на компьютере КЛИЕНТА. А Вам нужен сам файл.

Поискать в гугле пример, Вам уже советовали.
Сам файл в компе клиента. указываю его но прога не находит его.
по гугл такое нашел но там по другому http://www.studentstutorial.com/java-project/file-upload-jsp.php
...
Рейтинг: 0 / 0
Запись файла в базу из JSP
    #39664216
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Rustam ErgashevСам файл в компе клиента. указываю его но прога не находит его.

Файл - на клиенте
Прога - на сервере
Ясное дело, что "прога не находит его".
...
Рейтинг: 0 / 0
Запись файла в базу из JSP
    #39664265
Rustam Ergashev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Leonid KudryavtsevRustam ErgashevСам файл в компе клиента. указываю его но прога не находит его.

Файл - на клиенте
Прога - на сервере
Ясное дело, что "прога не находит его".
Вот здесь туплю. Уперся в стенку.
...
Рейтинг: 0 / 0
Запись файла в базу из JSP
    #39664266
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Rustam ErgashevLeonid Kudryavtsevпропущено...

Файл - на клиенте
Прога - на сервере
Ясное дело, что "прога не находит его".
Вот здесь туплю. Уперся в стенку.
Какая стенка?
Сам же пример с использованием apache библиотеки нашел (насколько пример хароший/рабочий, не знаю).
...
Рейтинг: 0 / 0
Запись файла в базу из JSP
    #39666977
Rustam Ergashev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пока закончил другими делами вот опять начел войну с ошибками и трудностями :) . Хотя пока проигрываю.
Значить для загрузки из клиентской машина на сервер этот код не годится
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
 File image=new File(request.getParameter("file_name"));
      psmt=conn.prepareStatement("insert into ru_files(id,id_appeal,id_type_file,file_name,file_data) values (?,?,?,?,?)");
      psmt.setInt(1,3);
      psmt.setInt(2,141);
      psmt.setInt(3,1);
      psmt.setString(4,request.getParameter("file_name"));
      fis=new FileInputStream(image);
      psmt.setBinaryStream(5, (InputStream)fis, (int)(image.length()));
      int s = psmt.executeUpdate();
      conn.commit();


А какой еще путь есть? Ну выход с положения. на PHP и на Delphi с этим проблем не было. Или я плохо искал или хорошо спрятано решение моей проблемы.
...
Рейтинг: 0 / 0
Запись файла в базу из JSP
    #39666992
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123SQL2008Как-то все сложно у вас... Я делал загрузку в БД через Blob, все замечательно работает.он без контроллеров)))
это видимо, что то очень старое по ходу. не уверен что кто-то будет строить коннект к базе в здравом уме прямо во вьюхе сегодня. за такое руки отрубать принято по самую шею.
...
Рейтинг: 0 / 0
Запись файла в базу из JSP
    #39666998
Фотография SQL2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Rustam ErgashevLeonid Kudryavtsevпропущено...

Не нужен никакой путь к файлу
Путь к файлу - это на компьютере КЛИЕНТА. А Вам нужен сам файл.

Поискать в гугле пример, Вам уже советовали.
Сам файл в компе клиента. указываю его но прога не находит его.
по гугл такое нашел но там по другому http://www.studentstutorial.com/java-project/file-upload-jsp.php
И что там другого?
Вот это попробуйте реализовать и напишите что получилось?
...
Рейтинг: 0 / 0
Запись файла в базу из JSP
    #39667010
Фотография SQL2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaTPetro123пропущено...
он без контроллеров)))
это видимо, что то очень старое по ходу. не уверен что кто-то будет строить коннект к базе в здравом уме прямо во вьюхе сегодня. за такое руки отрубать принято по самую шею.
Человек упорно пытается сделать велосипед с квадратными колесами, мотивируя это тем, что он более устойчив по сравнению с велосипедом на круглых колесах.
ТС: Так вам что нужно устойчивость (понимание как работает) или возможность ездить (функциональность)?
Может все-таки попытаться научиться ездить?
...
Рейтинг: 0 / 0
Запись файла в базу из JSP
    #39667163
am_sasa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Rustam Ergashev
Код: java
1.
 File image=new File(request.getParameter("file_name"));

а если посмотреть, что там в авторrequest.getParameter("file_name") и в авторFile image получилось? Скорее все полная хрень ...
...
Рейтинг: 0 / 0
Запись файла в базу из JSP
    #39667508
Rustam Ergashev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SQL2008Rustam Ergashevпропущено...

Сам файл в компе клиента. указываю его но прога не находит его.
по гугл такое нашел но там по другому http://www.studentstutorial.com/java-project/file-upload-jsp.php
И что там другого?
Вот это попробуйте реализовать и напишите что получилось?

я не могу изменять параметры сервера (Weblogic). там он не поддерживает Part и не работает этот код. И нужно код реализовать на jsp (знаю что это старая технология но придется работать) , web.xml не могу изменять.
...
Рейтинг: 0 / 0
Запись файла в базу из JSP
    #39667513
Rustam Ergashev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пока хочу на сервер скачать файл из клиента. Апликейшн сервер находится в другом сервере и в глобальном (локальном) сети. А клиент должен обращаться к серверу с любого места и передать в него выбранный файл. Я понял что в java это по другому сделано но как сделать пока учусь. Сделал по этому примеру http://www.studentstutorial.com/java-project/file-upload-jsp.php . Но есть кое что не понятное. вот кусок
Код: 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.
File file ;
int maxFileSize = 5000 * 1024;
int maxMemSize = 5000 * 1024;
//Это что за папка, для чего
String filePath = "c:/apache-tomcat/webapps/data/";

String contentType = request.getContentType();
if ((contentType.indexOf("multipart/form-data") >= 0)) {
DiskFileItemFactory factory = new DiskFileItemFactory();
factory.setSizeThreshold(maxMemSize);

//Это для чего "c:\\temp"

factory.setRepository(new File("c:\\temp"));
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( filePath + "yourFileName") ;  // "yourFileName" ?
fi.write( file ) ;
out.println("Uploaded Filename: " + filePath + fileName + "<br>");
}
}
}catch(Exception ex) {
System.out.println(ex);
}
}else{
out.println("Error in file upload.");
}


наверно это самые нужные параметры. Из за того что сервер не локальный я пока не знаю куда нужно uploudдит файл.
...
Рейтинг: 0 / 0
Запись файла в базу из JSP
    #39667528
Rustam Ergashev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вот нашел путь до место где расположен сам .jsp файл
Код: java
1.
String root = request.getServletContext().getRealPath("/");
...
Рейтинг: 0 / 0
Запись файла в базу из 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
31 сообщений из 31, показаны все 2 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / Запись файла в базу из JSP
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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