Pretendo, mediante un formulario html con un input type file, enviar el archivo al servidor y grabarlo en la base de datos. No tengo muy claro qué tipo de dato envía el formulario al servidor para recogerlo en una propiedad de clase.
Ты можешь записывать легко и практически изображение (или другой формат файла) в MySQL
как информация BLOB
.
Данные BLOB
это данные, хранившиеся в цепях байт и позволь мочь сохранять файлы многообразных форматов.
Для того, чтобы у тебя была идея, есть несколько типов данных BLOB
в MySQL
на основании максимального размера, который они могут хранить:
BLOB = (65,535 байт, 65KB)
MEDIUMBLOB = (16,777,215 байт, 16MB)
LONGBLOB = (4,294,967,295 байт, 4GB)
Я тебе должен код, чтобы мочь превращать изображение в байт, чтобы потом это пересылать в MySQL
со Спринг Фрэмеуорк, так как у меня есть этот код, но в VB.NET.
Равно как чтобы это показывать на странице, нужно использовать другой код, чтобы расшифровывать эту цепь байт.
Я понимаю, что мой ответ не является совсем прямым и абстрактная, но, если у кого-то есть код, который издает мой ответ.
public bool grabaimagen(string codigo, PictureBox pb)
{
conecta2();
MySqlCommand cmd = new MySqlCommand("update miembros set foto = @foto where codigo ='"+ codigo + "'",cn2);
cmd.Parameters.Add("@foto", MySqlDbType.LongBlob);
MemoryStream ms = new MemoryStream();
pb.Image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
cmd.Parameters["@foto"].Value = ms.GetBuffer();
int resultado = cmd.ExecuteNonQuery();
cn2.Close();
if (resultado > 0) { return true; } else { return false; }
}
public void verimagen(PictureBox pb, string codigo)
{
try
{
conecta2();
MySqlCommand cmd = new MySqlCommand("select foto from miembros where codigo = '" + vcodigo + "'", cn2);
MySqlDataAdapter da = new MySqlDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds, "img");
byte[] datos = new byte[0];
DataRow dr = ds.Tables["img"].Rows[0];
datos = (byte[])dr["foto"];
MemoryStream ms = new MemoryStream(datos);
pb.Image = System.Drawing.Bitmap.FromStream(ms);
}
catch (Exception)
{
}
cn2.Close();
}
//, чтобы вводить только, меняет update из-за insert into таблица оцени (поле, поле)//я надеюсь, что оно ты функционирует
Самое работоспособное состоит в том, чтобы ты не сохранял как таковое изображение, а ссылку в нее. Так ты можешь создавать поле типа VARCHAR, который назывались бы "соединение", и в хранить маршрут до изображения, например "/img/imagen1.jpg" Маршрут был бы касающейся рукописного шрифта, где загружается изображение.
Как результат query ты будешь должен помещать результат поля в Такой tag в PHP он был бы немного как
$sql = "select link from tabla";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
echo "<img src='".$row["link"]."' >";
}
}
$conn->close();
привет
Он пытается с этим:
public static void main(String[] args) throws Exception, IOException, SQLException {
Class.forName("org.gjt.mm.mysql.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/databaseName", "usuario", "password");
String sqlQuery = "insert into tu_tabla(campo_foto) values ( ?)";
FileInputStream fis = null;
PreparedStatement ps = null;
try {
conn.setAutoCommit(false);
File archivo = new File("myPhoto.png");
fis = new FileInputStream(archivo);
ps = conn.prepareStatement(sqlQuery);
ps.setBinaryStream(1, fis, (int) file.length());
ps.executeUpdate();
conn.commit();
} finally {
ps.close();
fis.close();
}
}