You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从ASP Image Control直接将图片保存至数据库?

解决远程条形码图片保存到数据库的问题

你的问题核心是**ReadFile函数仅支持读取本地文件路径,但你传入的是远程HTTP URL**,因此触发非法路径错误。以下是修正后的完整解决方案:

1. 清理条形码URL

原URL末尾带有多余的HTML标签残留'/>',先清理:

Dim src As String = "https://barcode.tec-it.com/barcode.ashx?data=" + txtNewPPO.Text + "&code=Code128&translate-esc=on"
Image1.ImageUrl = src

2. 替换图片读取方法

新增从远程URL下载图片并转为字节数组的函数,替代原ReadFile:

Imports System.Net

Public Function GetImageBytesFromUrl(ByVal imageUrl As String) As Byte()
    Using webClient As New WebClient()
        Return webClient.DownloadData(imageUrl)
    End Using
End Function

若使用.NET Framework 4.5+,更推荐用HttpClient:

Imports System.Net.Http

Public Async Function GetImageBytesFromUrlAsync(ByVal imageUrl As String) As Task(Of Byte())
    Using httpClient As New HttpClient()
        Return Await httpClient.GetByteArrayAsync(imageUrl)
    End Using
End Function

3. 修改数据库保存代码

调用新函数获取字节数组,同时修正变量大小写不一致问题:

Dim imgUrl As String = Image1.ImageUrl
Dim pic As Byte() = GetImageBytesFromUrl(imgUrl) '若用Async版本,需用Await调用

Dim qry1 As String = "Insert Into Employees (EmpID, EmpBarCode)values (@id,@img)"
Using myCommand As New SqlCommand(qry1, CN)
    myCommand.Parameters.Add(New SqlParameter("@id", SqlDbType.VarChar)).Value = Me.txtNewPPO.Text
    myCommand.Parameters.Add(New SqlParameter("@img", SqlDbType.Image)).Value = pic
    
    CN.Open()
    myCommand.ExecuteNonQuery()
    CN.Close()
End Using

额外注意事项

  • 确保服务器可访问远程条形码接口(检查防火墙、代理设置)
  • 对txtNewPPO.Text做URL编码,避免特殊字符请求失败:
    Dim encodedData As String = System.Web.HttpUtility.UrlEncode(txtNewPPO.Text)
    Dim src As String = $"https://barcode.tec-it.com/barcode.ashx?data={encodedData}&code=Code128&translate-esc=on"
    
  • 用Using语句自动释放资源,避免内存泄漏

内容的提问来源于stack exchange,提问作者ZahidKakar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 18:00:53