Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Аплоадер файлов / 6 сообщений из 6, страница 1 из 1
12.06.2012, 20:51:30
    #37835556
Jonnym
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аплоадер файлов
Добрый день! При написании аплоадера файлов столкнулся с трудностью создания ссылки для получения доступа к уже загруженому файлу на сервер. Для аплоадера использовал библиотеку apache и primefaces.
Теоретически нужно сгенерировать временную ссылку и связать ёё с файлом, затем поместить в базу данных. Но как это сделать на практике... Хотелось бы увидеть примерчик реализации этого дела. Задача вроде-бы распространённая, но вот что-то документации совсем не могу найти.
...
Рейтинг: 0 / 0
12.06.2012, 21:46:32
    #37835581
забыл ник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аплоадер файлов
вообще хранить в базе загруженные файлы не всегда хорошая идея. Что касается задачи, если сервер один - то в аплоад листенере вычитываешь файл, сохраняешь в /tmp и пишешь в базу путь. При показе - вычитываешь из базы путь, вычитываешь по этому пути файл и пихаешь в аутпутстрим.
...
Рейтинг: 0 / 0
12.06.2012, 22:03:44
    #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
12.06.2012, 22:16:45
    #37835599
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аплоадер файлов
забыл никвообще хранить в базе загруженные файлы не всегда хорошая идея. Что касается задачи, если сервер один - то в аплоад листенере вычитываешь файл, сохраняешь в /tmp и пишешь в базу путь. При показе - вычитываешь из базы путь, вычитываешь по этому пути файл и пихаешь в аутпутстрим.
С другой стороны тупое хранение в файловой системе, тоже не выход. Там транзакцонностью не пахнет. Если файлы временные а так же они не являются постоянным ресурсом работы сервера с БД, то можно и в базе. Если файлы являются основной сущностью, то, возможно стоит поискать специализированые транзакционные решения.
Например в SQL Server вроде есть специальные типы, в оракл тоже что-то должно быть. Существуют и транзакционные файловые системы.
...
Рейтинг: 0 / 0
12.06.2012, 22:44:08
    #37835612
Kachalov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аплоадер файлов
BlazkowiczС другой стороны тупое хранение в файловой системе, тоже не выход. Там транзакцонностью не пахнет.
- транзакционность не фетиш, при необходимости ее отсутствие можно компенсировать дополнительной логикой в приложении, - для web-приложений обычно важнее производительность, которая при простом хранении файлов в ФС как правило выше чем при иных способах размещения изображений.
...
Рейтинг: 0 / 0
12.06.2012, 22:49:57
    #37835617
Jonnym
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аплоадер файлов
Так что подскажете для решения проблемы?
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Аплоадер файлов / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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