上一篇
本文目录导读:
📸 图片上传+数据库存储:用ASP把照片塞进MySQL的保姆级教程
(信息更新至2025年8月,亲测可用!)
想象一下:你刚给电商网站开发了「用户头像上传」功能,结果用户上传的图片被恶意替换成奇怪内容😱!或者服务器磁盘突然爆满,却找不到谁传了1000张4K高清猫图🐱,这时候,把图片二进制数据直接存进MySQL数据库,既能防盗链,又能统一管理,简直是程序员の救星!
(附送防坑指南+emoji彩蛋🎁)
打开你的数据库管理工具(比如Navicat 2025),执行这条SQL:
CREATE TABLE img_storage ( id INT AUTO_INCREMENT PRIMARY KEY, file_name VARCHAR(255) NOT NULL, file_type VARCHAR(50), img_data LONGBLOB, -- 💡能存4GB以内的文件! upload_time DATETIME DEFAULT CURRENT_TIMESTAMP );
🔍 小知识:用LONGBLOB
而不用BLOB
,因为照片动不动就几MB,别让字段长度限制坑了你!
新建一个upload.asp
文件,抄这段HTML+ASP混合代码:
<!-- 上传表单要加这个属性! --> <form method="post" enctype="multipart/form-data" action="save_img.asp"> <input type="file" name="myFile" accept="image/*" required> <button type="submit">📤 上传我的帅照!</button> </form>
💡 安全提示:accept="image/*"
能限制用户只能选图片,但别忘了后端还要做二次验证!
重点来了!新建save_img.asp
文件,核心代码分三块:
读取上传的文件流
<% Dim fileData, fileName, fileType Set upload = Server.CreateObject("Persits.Upload.1") upload.SetMaxSize 5*1024*1024 ' 限制5MB,别让用户传电影! upload.SaveVirtual "/uploads" ' 先保存临时文件 fileName = upload.Form("myFile").FileName fileType = upload.Form("myFile").ContentType ' 🔥关键代码:读取二进制数据 Set stream = Server.CreateObject("ADODB.Stream") stream.Type = 1 ' adTypeBinary stream.Open stream.LoadFromFile Server.MapPath("/uploads/" & fileName) fileData = stream.Read ' 二进制数据塞进变量 stream.Close %>
防SQL注入+存入数据库
<% Dim conn, sql Set conn = Server.CreateObject("ADODB.Connection") conn.Open "DRIVER={MySQL ODBC 8.0 Driver};SERVER=localhost;DATABASE=test;UID=root;PWD=123456;" ' 🛡️文件名转义,防止小表砸搞事情 fileName = Replace(fileName, "'", "''") sql = "INSERT INTO img_storage (file_name, file_type, img_data) VALUES ('" & fileName & "', '" & fileType & "', ?)" Set cmd = Server.CreateObject("ADODB.Command") Set cmd.ActiveConnection = conn cmd.CommandText = sql cmd.Parameters.Append cmd.CreateParameter("@img_data", adLongVarBinary, adParamInput, LenB(fileData), fileData) cmd.Execute Response.Write "🎉 上传成功!你的照片已安全入库!" %>
显示图片的ASP代码
<% ' 从数据库读取二进制数据 Set rs = Server.CreateObject("ADODB.RecordSet") rs.Open "SELECT img_data, file_type FROM img_storage WHERE id=1", conn, 1, 1 Response.ContentType = rs("file_type") Response.BinaryWrite rs("img_data") rs.Close %>
TEXT
字段存图片! 💥 MySQL 8.0+的TEXT
最大只支持64KB,照片分分钟撑爆!File.Delete
删掉,否则服务器变垃圾场!最后吐槽:虽然技术上可行,但数据库存图片就像把行李箱塞进行李架——能装,但别天天这么干!😉
本文由 业务大全 于2025-08-24发表在【云服务器提供商】,文中图片由(业务大全)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://vds.7tqx.com/wenda/711262.html
发表评论