手动阀

Good Luck To You!

如何在ASP中实现图片上传并获取其路径?

ASP中图片上传路径通过表单获取文件,并使用Request.Files对象处理。

ASP上传图片路径

asp上传图片路径

在ASP(Active Server Pages)开发中,处理图片上传是一个常见需求,本文将详细介绍如何在ASP中实现图片上传,并探讨两种主要的存储方式:相对路径存储和二进制流存储,通过这两种方法的对比,开发者可以根据实际需求选择最合适的方案。

一、相对路径存储

1. 实现步骤

创建数据库表:需要创建一个用于存储图片信息的数据库表,可以创建一个名为Images的表,包含两个字段:Image_ID(主键)和Image_Wpath(用于保存图片的相对路径)。

CREATE TABLE Images (
    Image_ID int identity(1,1) primary key not null,
    Image_Wpath varchar(50) null
);

编写上传逻辑:在ASP页面中,使用FileUpload控件来实现文件上传功能,用户选择图片后,点击上传按钮,触发事件处理程序。

<%
Sub UploadButton_Click()
    Dim name, type, ipath, wpath, query1
    name = FileUpload1.FileName '获取文件名
    type = LCase(Mid(name, InStrRev(name, ".") + 1)) '获取文件类型
    ipath = Server.MapPath("Image") & "\" & name '获取文件路径
    wpath = "Image\" & name '设置文件保存相对路径
    query1 = "replace into Images values ('" & wpath & "')"
    If type = "jpg" Or type = "gif" Or type = "bmp" Or type = "png" Then
        FileUpload1.SaveAs(ipath) '服务器保存路径
        '这里假设有一个执行SQL语句的方法ExecterNonQuery
        ExecterNonQuery(query1)
    End If
End Sub
%>

显示图片:在需要显示图片的地方,通过查询数据库获取图片的相对路径,并将其设置为Image控件的ImageUrl属性。

<%
Sub DisplayButton_Click()
    Dim query2, sdr, wpath2
    query2 = "select * from Images where Image_ID=" & CInt(TextBox1.Text)
    Set sdr = sqlHelper.GetReader(query2)
    wpath2 = ""
    Do While Not sdr.EOF
        wpath2 = sdr("Image_Wpath")
        sdr.MoveNext()
    Loop
    sdr.Close()
    Image1.ImageUrl = wpath2
    Label1.Text = wpath2
End Sub
%>

2. 优缺点分析

优点:实现简单,只需存储图片的相对路径,不占用大量数据库空间。

缺点:如果图片位置发生变化或被删除,或者在不同主机上访问时,可能会导致图片无法显示,这种方法依赖于文件系统,存在安全隐患。

二、二进制流存储

1. 实现步骤

asp上传图片路径

修改数据库表:在数据库表中添加一个字段Image_Content,用于以二进制形式保存图片。

ALTER TABLE Images ADD Image_Content image NULL;

编写上传逻辑:与相对路径存储类似,但在保存图片时,将其读取为二进制流并存入数据库。

<%
Sub UploadButton_Click()
    Dim name, type, content, para, conn, cmd
    name = FileUpload1.PostedFile.FileName
    type = LCase(Mid(name, InStrRev(name, ".") + 1))
    Set fs = CreateObject("Adodb.Stream")
    fs.Mode = 3 '设置模式为二进制
    fs.Type = 1 '设置类型为二进制
    fs.Open
    fs.LoadFromFile Request.PhysicalApplicationPath & "upload\" & name '加载文件内容到流中
    fs.Position = 0 '定位到流的开头
    Set para = Server.CreateObject("Adodb.Stream")
    para.Mode = 3
    para.Type = 1
    para.Open
    para.Write fs.Read(fs.Size) '将流中的内容写入到另一个流中
    para.Position = 0
    para.SaveToFile Server.MapPath("upload\" & year(Now()) & right("0" & month(Now()), 2) & right("0" & day(Now()), 2) & right("0" & hour(Now()), 2) & right("0" & minute(Now()), 2) & right("0" & second(Now()), 2) & "." & FileTypeName, 2 '保存文件到指定目录
    para.Close()
    Set fs = Nothing '关闭并释放对象
    Set para = Nothing
End Sub
%>

显示图片:从数据库中读取二进制数据,并显示在页面上,这通常需要两个页面配合完成:一个用于上传图片并保存路径到数据库,另一个用于读取数据库中的二进制数据并显示图片。

<%@ Language=VBScript %>
<%
Dim imgID
imgID = Request.QueryString("ID")
Dim conn, rs, sql
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "your_connection_string_here"
sql = "SELECT * FROM Images WHERE Image_ID = " & imgID
Set rs = conn.Execute(sql)
If Not rs.EOF Then
    Response.ContentType = "image/jpeg" '设置响应类型为图片
    Response.BinaryWrite rs("Image_Content").GetChunk(1, 70000) '输出图片内容
End If
rs.Close
Set rs = Nothing
conn.Close
Set conn = Nothing
%>

2. 优缺点分析

优点:图片以二进制形式存储在数据库中,不依赖于文件系统,更加安全灵活,可以在任何主机上正确显示图片,只要正确读取了二进制数据。

缺点:实现相对复杂,且会占用较多的数据库空间,对于大型图片或大量图片的存储,可能会影响数据库性能。

三、相关问题与解答

1. 如何在ASP中实现图片上传进度条?

答:在ASP中实现图片上传进度条可以通过JavaScript结合AJAX技术来完成,具体步骤如下:

使用HTML和JavaScript创建一个带有进度条的上传表单。

asp上传图片路径

使用AJAX(如XMLHttpRequest或Fetch API)提交表单数据。

在服务器端(ASP)接收上传的数据,并通过回调函数返回进度信息。

客户端JavaScript根据返回的进度信息更新进度条。

需要注意的是,由于ASP本身的局限性,直接实现进度条可能较为复杂,更常见的做法是使用第三方库或插件来辅助实现。

2. 如何在ASP中限制图片上传的大小和类型?

答:在ASP中限制图片上传的大小和类型,可以在多个层面进行控制:

前端验证:在客户端使用JavaScript验证文件大小和类型,防止用户选择不符合要求的文件进行上传,这只是一个基本的安全措施,因为用户可以绕过这些验证。

后端验证:在服务器端(ASP)接收到文件后,再次检查文件的大小和类型,如果不符合要求,则拒绝保存并返回错误信息,这可以通过检查FileUpload控件的属性来实现。

If FileUpload1.FileSize > allowedSize Then
    Response.Write "文件大小超出限制!"
    Exit Sub
End If
If LCase(Right(FileUpload1.FileName, 3)) <> "jpg" And LCase(Right(FileUpload1.FileName, 3)) <> "png" Then
    Response.Write "只允许上传JPG和PNG格式的图片!"
    Exit Sub
End If

以上就是关于“asp上传图片路径”的问题,朋友们可以点击主页了解更多内容,希望可以够帮助大家!

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

Powered By Z-BlogPHP 1.7.3

Copyright Your WebSite.Some Rights Reserved.