przechowywanie zdjęć w sesji

Odpowiedz Nowy wątek
2014-08-06 14:27
0

Witajcie

mam stworzony View, który zawiera input - file do upload-u zdjęć oraz div do wyświetlania ściągniętych zdjęć wraz z ich nazwami, kod napisany w JS (a dokładnie w Jquery), teraz chcę dodać formę (na odrębnej stronie) do wprowadzania danych ale nie chcę tracić już ściągniętych zdjęć. Próbowałem z sessionStorage, ale o ile w IE wszystko działa ok (bo można przechować całą ścieżkę do zdjęcia) to w Firefoxie już wszystko się wali, bo ściąga tylko nazwę pliku i wyświetlanie zdjęcia nie działa. Czytałem, że większość nowych przeglądarek nie pozwala na pobranie pełnej ścieżki do zdjęcia ze względów bezpieczeństwa. Czy jest jakaś możliwość przechowania zdjęcia w sesji lub inny sposób, który pozwoli na jednoczesnym uploadzie, wyświetleniu i przechowaniu zdjęć?

pozdrawiam

Pozostało 580 znaków

2014-08-06 14:33
ne0
0

A gdzie ogólnie zapisujesz zdjęcia>? W bazie danych?
ja za pomocą jquery wysyłam zdjęcie do funkcji w kontrolerze która zapisuje do DB zdjęcie, oczywiście podobnie pobieram. Tyle że to trochę inne podejście niż Twoje.
Z tego co czytałem trzymanie danych w sesji obciąża aplikację, dlatego proponuje skupić się POST-GET zamiast trzymania wszystkiego w sesji.


Pomogłem? To oznacz :)
edytowany 3x, ostatnio: ne0, 2014-08-06 14:38

Pozostało 580 znaków

2014-08-06 16:49
0

finalnie zdjęcia trafią do bazy, ale po wprowadzeniu na drugiej stronie pewnych danych i naciśnięciu przycisku "Zapisz", czyli
Page1 - strona do ściągania zdjęć,
Page2 - strona do wprowadzania danych plus przycisk "Zapisz"

Pozostało 580 znaków

2014-08-06 17:41
ne0
1

W takim razie to nie ma żadnego znaczenia. Ponieważ tworzysz w pierwszym ActionResult obiekt klasy modelu (który ma takie wartości jak tabela w bazie) i potem go przekazujesz tylko do drugiego ActionResult. Ewentualnie jak nie chcesz się tak bawić, stwórz sobie w kontrolerze obiekt np. MojModel model; w pierwszym ActrionResult dodaj do niego zdjęcia, a w drugim actionresult uzupełnił resztę pól ;)


Pomogłem? To oznacz :)

Pozostało 580 znaków

2014-08-06 19:39
0

pomysł dość interesujący, tylko możesz jakoś to rozszerzyć? mam zastosować List <t> dzięki

edytowany 2x, ostatnio: szymon7500, 2014-08-06 19:40

Pozostało 580 znaków

2014-08-06 19:51
ne0
public class User{
public int Id {get; set;}
public string Name {get; set;}
}

następnie tworzysz sobie w kontrolerze:

....HomeController:Controller{
public User user {get; set;}
public ActionResult Index()
{
return View();
}

[HttpPost]
public ActionResult Index(User u)
{
user.Name = u.name;
return RedirectToAction("Index2");
}

public ActionResult Index2()
{
return View();
}
[httpPost]
public ActionResult Index2(User u)
{
user.Id = u.Id;
}

tym sposobem masz jednego usera, i do niego w różnych akcjach wsadzasz odpowiednie dane. możesz jeszcze taki numer zrobić:

....HomeController:Controller{

public ActionResult Index()
{
return View();
}

[HttpPost]
public ActionResult Index(User u)
{
var user = new User();
user.Name = u.name;
return RedirectToAction("Index2", user);
}

public ActionResult Index2(User user = null)
{
return View(user);
}
[httpPost]
public ActionResult Index2(User u)
{
user.Id = u.Id;
}

i dzięki temu Od razu ładujesz dane do widoku z wcześniejszej akcji.
cały kod pisany z palca, bez kompilatora i bez sprawdzania czy na pewno działa. ale tym na pewno wiesz już o co chodzi.


Pomogłem? To oznacz :)

Pozostało 580 znaków

2014-08-07 07:42
0

dzięki, mniej więcej wiem o co chodzi

pozdrawiam

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0