powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Аплоадер файлов
6 сообщений из 6, страница 1 из 1
Аплоадер файлов
    #37835556
Jonnym
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день! При написании аплоадера файлов столкнулся с трудностью создания ссылки для получения доступа к уже загруженому файлу на сервер. Для аплоадера использовал библиотеку apache и primefaces.
Теоретически нужно сгенерировать временную ссылку и связать ёё с файлом, затем поместить в базу данных. Но как это сделать на практике... Хотелось бы увидеть примерчик реализации этого дела. Задача вроде-бы распространённая, но вот что-то документации совсем не могу найти.
...
Рейтинг: 0 / 0
Аплоадер файлов
    #37835581
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вообще хранить в базе загруженные файлы не всегда хорошая идея. Что касается задачи, если сервер один - то в аплоад листенере вычитываешь файл, сохраняешь в /tmp и пишешь в базу путь. При показе - вычитываешь из базы путь, вычитываешь по этому пути файл и пихаешь в аутпутстрим.
...
Рейтинг: 0 / 0
Аплоадер файлов
    #37835590
Jonnym
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 забыл ник
Ну локальный путь мы скопируем, а как же создать ссылку для скачивания?
Хотя и скопировать путь в базу пока-что не получаеться...
Вот пример моего бина.

Код: 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.
package bean;
import entity.Xlist;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.context.FacesContext;
import javax.ws.rs.core.Response;
import org.primefaces.event.FileUploadEvent;
 
@ManagedBean(name="fileUploadController")
public class FileUploadController {
   private String destination="C:\\tmp\\";
    public void upload(FileUploadEvent event) {  
        FacesMessage msg = new FacesMessage("Success! ", event.getFile().getFileName() + " is uploaded.");  
        FacesContext.getCurrentInstance().addMessage(null, msg);
        // Do what you want with the file        
        try {
            copyFile(event.getFile().getFileName(), event.getFile().getInputstream());
       
        } catch (IOException e) {
            e.printStackTrace();
        }
    }  
    public void copyFile(String fileName, InputStream in) {
           try {
                       
                // write the inputStream to a FileOutputStream
                OutputStream out = new FileOutputStream(new File(destination + fileName));
                Xlist x = new Xlist();
                x.setDir(destination);
                x.setId(fileName);
                x.toString();
                int read = 0;
               
		byte[] bytes = new byte[1024];
             
                while ((read = in.read(bytes)) != -1) {
                    out.write(bytes, 0, read);
                }
             
                in.close();
                out.flush();
                out.close();
             
                System.out.println("New file created!");
                } catch (IOException e) {
                System.out.println(e.getMessage());
                }
    }
}
...
Рейтинг: 0 / 0
Аплоадер файлов
    #37835599
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл никвообще хранить в базе загруженные файлы не всегда хорошая идея. Что касается задачи, если сервер один - то в аплоад листенере вычитываешь файл, сохраняешь в /tmp и пишешь в базу путь. При показе - вычитываешь из базы путь, вычитываешь по этому пути файл и пихаешь в аутпутстрим.
С другой стороны тупое хранение в файловой системе, тоже не выход. Там транзакцонностью не пахнет. Если файлы временные а так же они не являются постоянным ресурсом работы сервера с БД, то можно и в базе. Если файлы являются основной сущностью, то, возможно стоит поискать специализированые транзакционные решения.
Например в SQL Server вроде есть специальные типы, в оракл тоже что-то должно быть. Существуют и транзакционные файловые системы.
...
Рейтинг: 0 / 0
Аплоадер файлов
    #37835612
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczС другой стороны тупое хранение в файловой системе, тоже не выход. Там транзакцонностью не пахнет.
- транзакционность не фетиш, при необходимости ее отсутствие можно компенсировать дополнительной логикой в приложении, - для web-приложений обычно важнее производительность, которая при простом хранении файлов в ФС как правило выше чем при иных способах размещения изображений.
...
Рейтинг: 0 / 0
Аплоадер файлов
    #37835617
Jonnym
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Так что подскажете для решения проблемы?
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Аплоадер файлов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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