对于来自数据库的PHP显示图像(中等Blob)感兴趣的读者,本文将会是一篇不错的选择,我们将详细介绍php如何显示数据库里图片,并为您提供关于Angular10将blob转换为显示图像、asp.net
对于来自数据库的PHP显示图像(中等Blob)感兴趣的读者,本文将会是一篇不错的选择,我们将详细介绍php如何显示数据库里图片,并为您提供关于Angular 10 将 blob 转换为显示图像、asp.net-mvc – 使用ASP.NET MVC在Details页面模板中显示来自数据库的byte []数组图像、c# – 从MySQL中检索中等blob只返回13个字节、c# – 来自数据库的asp.net web api中的视频流的有用信息。
本文目录一览:- 来自数据库的PHP显示图像(中等Blob)(php如何显示数据库里图片)
- Angular 10 将 blob 转换为显示图像
- asp.net-mvc – 使用ASP.NET MVC在Details页面模板中显示来自数据库的byte []数组图像
- c# – 从MySQL中检索中等blob只返回13个字节
- c# – 来自数据库的asp.net web api中的视频流
来自数据库的PHP显示图像(中等Blob)(php如何显示数据库里图片)
我目前有一个数据库,可以在其中存储图像.
但是我创建以显示它们的PHP页面…不起作用.
但是当我将链接用作<的scr时; img>它显示一个空的图像框架.
如果我直接回显图像,则会出现很多奇怪的迹象
我要显示图像的方式是:
< img src =“ image.PHP?image =”'.$imageID.'/>
我用于显示图像(image.PHP)的代码是:
<?PHP session_start();
if(!isset($_GET['image']))
{
header("HTTP/1.0 404 Not Found");
}
else{
$link = MysqL_connect('localhost', '45345345435435345', 'wewfsersdfds');
if (!$link) {
echo "error";
die;
}
$db_selected = MysqL_select_db(Tha base, $link);
if (!$db_selected) {
echo "error";
die;
}
$nummer=(int)trim(stripslashes($_GET['image']));
$mynr=$nummer;
$sql="SELECT * FROM Foto WHERE fotonr=$mynr";
$result=MysqL_query($sql);
if(!$result)
{
echo "error".MysqL_error();
header("HTTP/1.0 404 Not Found");
}
else
{
$foto = MysqL_fetch_assoc($result);
header("Content-type: ".$foto['type']);
echo $foto['image'];
}
}
?>
我已经尝试了很多,但是它不起作用:(
我将代码更新为最新版本.
sql出错(不选择任何内容/从不做int的MysqL_real_escape_string)
现在它显示的是字符而不是图像的直线,这至少是一种改进…
有人能帮我吗?
感谢您的时间!
解决方法:
老实说,我知道这可能很棘手.我认为这与您如何存储它有关,而不是与输出它有关.我有一个可以显示的最新项目的存储示例.
$fp = fopen($image_path, 'r');
$image = fread($fp, filesize($image_path));
$image = addslashes($image);
fclose($fp);
// save $image into DB.
不知道您是否对file_get_contents做类似的事情.我的输出方式与您的操作方式类似,只是我使用ORM和框架.
Angular 10 将 blob 转换为显示图像
如何解决Angular 10 将 blob 转换为显示图像?
我的 Web 应用程序是在 MEAN 堆栈上制作的。绘画服务连接到我的 node.js 服务器并以 blob 形式获取图像文件(存储在服务器上)。我正在尝试使用此 blob 文件在 Angular 10 前端显示为图像。我确实成功获取了 blob 文件,但无法显示它。我怎样才能做到这一点?或者有更好的方法吗?
下面是我的 component.ts 文件
export class PaintingsComponent implements OnInit {
thumbnail;
constructor(private paintingService: PaintingsService,private sanitizer: DomSanitizer) { }
ngOnInit() {
this.paintingService.getAllPaintings().subscribe(
(res) => {
var file = new File([res],"image",{ type: "image/png" })
var output = document.getElementById(''test'')
var url;
var reader = new FileReader()
reader.onload = () => {
url = reader.result
console.log(''URL '',url)
this.thumbnail = this.sanitizer.bypassSecurityTrustUrl(url)
console.log(''Thumbnail '',this.thumbnail)
}
reader.readAsDataURL(file)
},(err) => console.log(''This is error'',err)
)
}
}
下面是我的 component.html 文件
<img id="myimage" [src]=''thumbnail'' height="200px"/>
url 具有类似的值
data:image/png;base64,77+9UE5HDQoaCgAAAA1JSERSAAACPw.......
缩略图具有类似的价值
SafeUrlImpl {changingThisBreaksApplicationSecurity:"data:image/png;base64,77+9UE5HDQoaCgAAAA1JSERSAAACoAu+/vQ9iJu+/vXgnNu+/ve+/vQAAAABJRU5E77+9QmDvv70="
.....
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)
asp.net-mvc – 使用ASP.NET MVC在Details页面模板中显示来自数据库的byte []数组图像
public FileContentResult RenderPhoto(byte[] photo) { // var array = (byte[])Session["photo"]; // return File(array,"image/jpeg"); return File(photo,"image/jpeg"); } <img src="@Url.Action("RenderPhoto",Model.Photo)"/>
照片为空.
如果我在会话中存储student.Photo:
// // GET: /Student/Details/5 public ViewResult Details(int id) { Student student = db.Students.Find(id); Session["photo"] = student.Photo; return View(student); }
并尝试显示从Session(上面的注释行)中检索值的图像.
为什么我在第一种情况下获得空值?
将学生传递给ViewResult详细信息(int id)中的View后,Model.Photo不再保留该值?
解决方法
Why I’m getting a null value in the first case?
您不能在< img>中将字节数组传递给服务器.标签. < img> tag只是向指定的资源发送GET请求.正确的方法是使用id:
<img src="@Url.Action("RenderPhoto",new { photoId = Model.PhotoId })" />
然后:
public ActionResult RenderPhoto(int photoId) { byte[] photo = FetchPhotoFromDb(photoId); return File(photo,"image/jpeg"); }
c# – 从MySQL中检索中等blob只返回13个字节
我需要将图像保存到 mysql文件中.
我使用下面的代码将图像保存到数据库中.
try { string location = @"C:\Users\test\Downloads\Photos\batman-greenscreen.jpg"; FileStream fs = new FileStream(location,FileMode.Open,FileAccess.Read); UInt32 fileLength = (UInt32)fs.Length; byte[] buffer = new byte[fileLength]; fs.Read(buffer,(int)fileLength); string sqlPhotoQuery = "INSERT INTO tab_photo VALUES('" + photo.PhotoId + "','" + photo.ProjectID + "','" + photo.Day + "','" + photo.Barcode + "','" + photo.Photoname + "','" + photo.PhotoXml + "','" + buffer + "','" + fileLength + "')"; int result = MysqLHelper.ExecuteNonQuery(connectionString,sqlPhotoQuery); if (result > 0) return true; else return false; } catch (Exception e) { return false; }
在此文件中图像长度为12428,
我试图从数据库中检索数据:
Photo photo = new Photo(); try { string sqlQuery = "SELECT * FROM tab_photo where PhotoId='"+photoId+"'"; MysqLDataReader rdr = MysqLHelper.ExecuteReader(connectionString,sqlQuery); while (rdr.Read()) { photo.PhotoId = rdr.GetString("PhotoId"); photo.ProjectID = rdr.GetString("ProjectID"); photo.Day = rdr.GetInt32("Day"); photo.Barcode = rdr.GetString("Barcode"); photo.Photoname = rdr.GetString("Photoname"); photo.PhotoXml = rdr.GetString("PhotoXml"); MemoryStream ms; UInt32 FileSize; Bitmap outimage; int fileSize = rdr.GetInt32(rdr.Getordinal("PhotoSize")); byte[] rawData = new byte[fileSize]; rdr.GetBytes(rdr.Getordinal("Photo"),rawData,(Int32)fileSize); photo.imageByte = rawData; } } catch (Exception e) {}
但是当我检索文件时,它只检索前13个字节.之后,它的值为零,并且检索值存在差异.
我遵循了Handling BLOB Data With Connector/Net中提到的说明.
根据我已经改变我的设置如下:
这是数据保存在数据库中的方式
我无法获得正确值的原因是什么?在数据保存或数据检索或数据库配置方面有任何问题吗?
解决方法
INSERT INTO tab_photo VALUES(...,'System.Byte[]',...)";
像在示例中一样使用参数化查询,你应该很好.
不要只是将某些字符串连接到SQL查询中. (并且不要在这样的方法中捕获并吞没所有异常.这使得在发生故障时很难调试.)
c# – 来自数据库的asp.net web api中的视频流
这是我的代码(我通过网络搜索获得)
public class VideosController : ApiController { // GET api/values public HttpResponseMessage Get(string filename) { var filePath = HttpContext.Current.Server.MapPath("~") + filename; if (!File.Exists(filePath)) return new HttpResponseMessage(HttpStatusCode.NotFound); var response = Request.CreateResponse(); response.Headers.AcceptRanges.Add("bytes"); var streamer = new FileStreamer(); streamer.FileInfo = new FileInfo(filePath); response.Content = new PushStreamContent(streamer.WritetoStream,"video/mp4"); RangeHeaderValue rangeHeader = Request.Headers.Range; if (rangeHeader != null) { long totalLength = streamer.FileInfo.Length; var range = rangeHeader.Ranges.First(); streamer.Start = range.From ?? 0; streamer.End = range.To ?? totalLength - 1; response.Content.Headers.ContentLength = streamer.End - streamer.Start + 1; response.Content.Headers.ContentRange = new ContentRangeHeaderValue(streamer.Start,streamer.End,totalLength); response.StatusCode = HttpStatusCode.PartialContent; } else { response.StatusCode = HttpStatusCode.OK; } return response; } class FileStreamer { public FileInfo FileInfo { get; set; } public long Start { get; set; } public long End { get; set; } public async Task WritetoStream(Stream outputStream,HttpContent content,TransportContext context) { try { var buffer = new byte[65536]; using (var video = FileInfo.OpenRead()) { if (End == -1) { End = video.Length; } var position = Start; var bytesLeft = End - Start + 1; video.Position = Start; while (position <= End) { // what should i do here? var bytesRead = video.Read(buffer,(int)Math.Min(bytesLeft,buffer.Length)); await outputStream.WriteAsync(buffer,bytesRead); position += bytesRead; bytesLeft = End - position + 1; } } } catch (Exception ex) { // fail silently } finally { outputStream.Close(); } } } }
这是我的HTML代码:
<video width="640" height="480" controls="controls"> <source src="/api/Videos/?filename=sample.mp4" type="video/mp4"> </video>
有一种方法可供我(由其他人编写)从引擎(数据库)获取一系列文件,其代码如下:
public byte[] Engine.DownloadStreamFile(Guid fileId,long from,long length)
我试图从这个方法读取并写在响应输出流,但我不能.它似乎我无法处理从谷歌铬接收.有什么想法吗?
解决方法
// what should i do here? var bytesRead = video.Read(buffer,buffer.Length)); // becomes var bytesRead = Engine.DownloadStreamFile(this.fileId,this.Start,this.End);
您显然需要向您的类添加fileId字段/属性,而不是今天的FileInfo.
关于来自数据库的PHP显示图像(中等Blob)和php如何显示数据库里图片的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于Angular 10 将 blob 转换为显示图像、asp.net-mvc – 使用ASP.NET MVC在Details页面模板中显示来自数据库的byte []数组图像、c# – 从MySQL中检索中等blob只返回13个字节、c# – 来自数据库的asp.net web api中的视频流的相关信息,请在本站寻找。
本文标签: