Я хочу получить изображение из mysql/servlet из jsp с помощью jquery. Я сделал сервлет, который извлекает объект из mysql и анализирует его на json, и, наконец, отображает атрибуты объекта с помощью jquery.Извлечение изображения входного потока из сервлета с помощью jquery
После запуска jsp я получил атрибуты строки, но, к сожалению, моя проблема с поврежденным изображением. Я думаю, что у меня проблема с отображением изображения входного потока, или я что-то упускаю. помощь Пожалуйста
index.jsp
<script src="http://code.jquery.com/jquery-latest.js">
</script>
<script>
$(document).ready(function()
{
$.ajax
({
type: "GET",
url: "InfoServlet",
dataType:"json",
success: function(data)
{
$.each(data, function(i,data)
{
var msg_data= "<div id='msgdiv"+data.Msg+"'>"+data.IdInfo+" and "+data.Msg+"</div>";
$(msg_data).appendTo("#content");
$('#thediv').prepend('<img id="theImg" src='+data.Picture+' />');
});
}
});
return false;
});
</script>
</head>
<body>
<div id='content'></div>
<div id='thediv'></div>
</body>
</html>
сервлета:
@WebServlet("/InfoServlet")
public class InfoServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public InfoServlet()
{
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
response.setContentType("text/html");
PrintWriter out = response.getWriter();
try
{
Gson gson = new Gson();
InfoService is = new InfoService();
Info info = new Info();
int idinfo = 2;
info = is.queryById(idinfo);
String gout= gson.toJson(info);
System.out.println("{\"Messages\":"+gout+"}");
out.println("{\"Messages\":"+gout+"}");
//System.out.println(gout);
}
catch (Exception ex)
{
System.out.println("Error: "+ ex.getMessage());
}
finally
{
System.out.close();
}
}
}
Информационный объект:
package net.test.service;
import java.io.InputStream;
public class Info
{
private int IdInfo;
private String Msg;
private InputStream Picture;
public int getIdInfo() {
return IdInfo;
}
public void setIdInfo(int idInfo) {
IdInfo = idInfo;
}
public InputStream getPicture() {
return Picture;
}
public void setPicture(InputStream picture) {
Picture = picture;
}
public String getMsg() {
return Msg;
}
public void setMsg(String msg) {
Msg = msg;
}
}
Хорошее предложение спасибо, но если я поеду с вашим предложением, я думаю, что файлы временного изображения будут увеличиваться с течением времени, а также сохраненное изображение в БД, что означает удвоение пространства HD. Считаете ли вы, что мне нужно изменить код и сохранить только URL-адрес изображения в db, а не изображение. Проблема в том, что я построил весь свой код для работы с сохраненным образцом базы данных как LongBlob, поэтому, если я решил изменить это, мне нужно изменить весь код. Я попытаюсь получить изображение из db в виде массива byte [], как вы заметили вначале, и я попытаюсь посмотреть, есть ли потенциал для показа изображения. – FishCode
Я считаю, что лучшим решением является сохранение URL-адреса в вашей базе данных и сохранение изображения в папке вашего сайта, иногда усилия по реорганизации кода - лучшее решение для повышения производительности и удобства обслуживания. –
Наконец, я попытался работать с Base64, чтобы показать изображение, и это было очень удобно для меня. Thank you – FishCode