Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Java Новый топик    Ответить
 Уникальное имя фотографиям в БД(Spirng MVC и MySQL)  [new]
fallen2019
Member

Откуда:
Сообщений: 203
Я написал проект который хранит изображение в БД(MySQL). Так вот у меня проблема возникла, у меня есть две фотографии (первый.jpeg, второй.jpeg). Так вот они нормально по названию хранятся в базе данных до тех пор пока я не поменяю название фотографии, допустим название первый.jpeg поменяю на второй.jpeg то фотография сходу меняется на первую фотографию, хотя я просто его переименовал должно меняться только название а не фотография. Я хочу использовать UUID, чтобы допустим я добавлю фото и джава сразу же дала ему уникальное имя и хранила с новым именем в БД. Помогите пожалуйста реализовать.


Контроллер
package fallen.java.schoolmaven.controller;

import fallen.java.schoolmaven.service.StudentService;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;

import javax.servlet.ServletContext;

import javax.servlet.http.HttpServletResponse;
import org.apache.commons.io.IOUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.repository.query.Param;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;

@Controller
public class AvatarController {

    @Autowired
    private ServletContext servletContext;

    // Constructor based Dependency Injection
    

    

   

 @GetMapping(value = "/avatar")
    public void getAvatar(HttpServletResponse response, @Param("avatar") String avatar) throws IOException {
        if(avatar == null || avatar.isEmpty()) return;
        final String avatarFolder = servletContext.getRealPath("/WEB-INF/images/");
        response.setContentType(MediaType.IMAGE_JPEG_VALUE);
        IOUtils.copy(new FileInputStream(avatarFolder + "/" + avatar), response.getOutputStream());
    }
    
     @RequestMapping(value = "/image", method = RequestMethod.GET)
    public void image(@RequestParam String url, HttpServletResponse response) throws IOException {
        InputStream in = new FileInputStream(url);
        response.setContentType(MediaType.IMAGE_JPEG_VALUE);
        IOUtils.copy(in, response.getOutputStream());
    }
} 


<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.0/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.0/js/bootstrap.min.js"></script>
<title>Home</title>

</head> 
<body>
    <div class="add">
        <br>
    <br>
    <br>
    
    <br>
    <center>
	<h1>${headerMessage}</h1>
	
        <form:form method="POST" action="addStudent" enctype="multipart/form-data">
             <table>

                <tr>
                    <td><label path="Name">Имя</label></td>
                    <td><input type="text" name="name"/></td>
                </tr>
                <tr>
                    <td><label path="Surname">Фамилия</label></td>
                    <td><input type="text" name="surname"/></td>
                </tr>
                <tr>
                    <td><label path="Avatar">Фотография:</label></td>
                    <td>
                        <input type="file" name="avatar"/>
                    </td>
                    
                </tr>
                <tr>
                    <td><input class="btn btn-primary" type="submit" value="Добавить"></td>
                </tr>
            </table>
        </form:form>
</center>
        </div>
</body>
</html>
2 май 19, 08:56    [21876684]     Ответить | Цитировать Сообщить модератору
 Re: Уникальное имя фотографиям в БД(Spirng MVC и MySQL)  [new]
fallen2019
Member

Откуда:
Сообщений: 203
fallen2019,

Вот здесь я добавил фотки (стивджобс и биллгейтс)

К сообщению приложен файл. Размер - 142Kb
2 май 19, 10:01    [21876710]     Ответить | Цитировать Сообщить модератору
 Re: Уникальное имя фотографиям в БД(Spirng MVC и MySQL)  [new]
fallen2019
Member

Откуда:
Сообщений: 203
fallen2019,

А вот здесь я просто поменял название фотки "стивджобс" на "биллгейтс" и тут вместе с названием фотка поменялась (не должно быть так)

К сообщению приложен файл. Размер - 74Kb
2 май 19, 10:01    [21876711]     Ответить | Цитировать Сообщить модератору
 Re: Уникальное имя фотографиям в БД(Spirng MVC и MySQL)  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
fallen2019,
Делай ОТЛАДКУ.
По шагам или логами приложения.
2 май 19, 10:09    [21876716]     Ответить | Цитировать Сообщить модератору
 Re: Уникальное имя фотографиям в БД(Spirng MVC и MySQL)  [new]
fallen2019
Member

Откуда:
Сообщений: 203
Petro123,

У меня все нормально работает без ошибок, просто надо переписать код так чтобы он только изменял название а не саму фотографию
2 май 19, 10:38    [21876724]     Ответить | Цитировать Сообщить модератору
 Re: Уникальное имя фотографиям в БД(Spirng MVC и MySQL)  [new]
mayton
Member

Откуда: loopback
Сообщений: 41377
fallen2019,

А покажи как ты создавал табличку в mysql.
2 май 19, 11:25    [21876759]     Ответить | Цитировать Сообщить модератору
 Re: Уникальное имя фотографиям в БД(Spirng MVC и MySQL)  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
fallen2019,
Логируют не для ошибок. Это обязательное умение програамиста. В том числе в JS на F12.
Иначе в раздел работа.
2 май 19, 11:25    [21876760]     Ответить | Цитировать Сообщить модератору
 Re: Уникальное имя фотографиям в БД(Spirng MVC и MySQL)  [new]
SQL2008
Member

Откуда: Москва
Сообщений: 3945
fallen2019
Petro123,

У меня все нормально работает без ошибок, просто надо переписать код так чтобы он только изменял название а не саму фотографию

На мой взгляд хранить изображения как картинки на диске плохая идея.
В случае (как у вас) переименования вы получаете большой геморр так как необходимо одновременно переименовывать и имя файла в базе, и ссылку на него. Не забывайте про кеширование, которое будет вам подсовывать старый файл из кеша.

Лучше хранить изображения в базе как блобы.
4 май 19, 07:55    [21877615]     Ответить | Цитировать Сообщить модератору
 Re: Уникальное имя фотографиям в БД(Spirng MVC и MySQL)  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
SQL2008,
Либо никогда не переименовывать файл на диске. Только в табличке.
4 май 19, 08:47    [21877632]     Ответить | Цитировать Сообщить модератору
 Re: Уникальное имя фотографиям в БД(Spirng MVC и MySQL)  [new]
Hett
Member

Откуда: Бийск, Новосибирск
Сообщений: 13543
Зачем название файла вообще менять? Давайте им имена по id, а отображаемое имя храните в отдельном поле.
4 май 19, 09:28    [21877644]     Ответить | Цитировать Сообщить модератору
 Re: Уникальное имя фотографиям в БД(Spirng MVC и MySQL)  [new]
mayton
Member

Откуда: loopback
Сообщений: 41377
Hett, мы в топике к этому сейчас подойдем.

К сожалению автор выложил огрызок бесполезного кода. А полезный скрыл.
4 май 19, 16:31    [21877773]     Ответить | Цитировать Сообщить модератору
 Re: Уникальное имя фотографиям в БД(Spirng MVC и MySQL)  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 16055
Hett
Зачем название файла вообще менять? Давайте им имена по id, а отображаемое имя храните в отдельном поле.
+100500
5 май 19, 12:52    [21878049]     Ответить | Цитировать Сообщить модератору
Все форумы / Java Ответить