上一篇
某天,公司运营小妹哭唧唧跑来找你:“哥,用户上传的10GB教学视频总失败,IIS报错413,咋办啊?”😱 你淡定一笑,掏出本文秘籍——ASP大文件上传终极解决方案,从此告别“文件太大上传不了”的尴尬!
IIS默认只允许上传30MB的文件,超过就触发“请求实体过大”错误。
解决方法:修改IIS配置 + 调整ASP参数!
<!-- web.config配置 --> <system.web> <httpRuntime maxRequestLength="512000" executionTimeout="3600"/> </system.web> <system.webServer> <security> <requestFiltering> <requestLimits maxAllowedContentLength="524288000"/> </requestFiltering> </security> </system.webServer>
💡 参数说明:maxRequestLength单位是KB(512000≈500MB),maxAllowedContentLength单位是字节(524288000≈500MB)。
传统ASP上传会把文件全塞进内存,上传10GB文件?服务器直接“躺平”!
终极方案:分块上传 + 流式处理!
// 前端分块代码(简化版) const chunkSize = 2 * 1024 * 1024; // 2MB/块 let currentChunk = 0; const file = document.getElementById('file').files[0]; function uploadChunk() { if (currentChunk * chunkSize >= file.size) return; const chunk = file.slice(currentChunk * chunkSize, (currentChunk+1)*chunkSize); const formData = new FormData(); formData.append('chunk', chunk); formData.append('filename', file.name); formData.append('index', currentChunk); // AJAX上传当前块 fetch('/upload.asp', { method: 'POST', body: formData }) .then(() => { currentChunk++; uploadChunk(); }); } uploadChunk();
救命功能:断点续传!
<% ' ASP服务端合并分块逻辑 Dim fileName, totalChunks, currentChunk fileName = Request.Form("filename") totalChunks = CInt(Request.Form("total")) currentChunk = CInt(Request.Form("index")) ' 保存当前块到临时目录 Request.BinaryRead(Request.TotalBytes).SaveAs "temp/" & currentChunk & ".part" ' 所有块上传完成后合并 If currentChunk = totalChunks -1 Then Dim fs, fileStream Set fs = Server.CreateObject("Scripting.FileSystemObject") Set fileStream = fs.CreateTextFile("uploads/" & fileName, True) For i = 0 To totalChunks-1 fileStream.Write fs.OpenTextFile("temp/" & i & ".part").ReadAll Next fileStream.Close Response.Write "✅ 上传成功!" End If %>
核心功能:
<% Set upload = Server.CreateObject("Persits.Upload.1") upload.MaxFileSize = 1024 * 1024 * 1024 * 10 ' 10GB upload.SaveVirtual "/uploads/" If upload.Files.Count > 0 Then Response.Write "🎉 文件已保存至:" & upload.Files(0).VirtualPath End If %>
适合场景:预算有限的小项目
注意事项:需手动处理分块合并逻辑
步骤 | 操作 | 关键代码/配置 |
---|---|---|
配置IIS | 修改maxAllowedContentLength | <requestLimits maxAllowedContentLength="524288000"/> |
前端分块 | 2MB/块切割文件 | file.slice(start, end) |
服务端处理 | 逐块接收并合并 | Request.BinaryRead + 循环写入 |
断点续传 | 记录已上传块索引 | 数据库/文件存储进度信息 |
Request.Form
直接取文件:大文件会超时,改用Request.BinaryRead
流式读取! 用户上传5GB视频时,进度条稳如老狗,断网后重启浏览器还能接着传!服务器内存占用始终<100MB,老板看了直呼“666”!
🔗 参考来源:
💬 互动话题:你遇到过最奇葩的文件上传问题是什么?评论区吐槽,帮你解决!
本文由 业务大全 于2025-08-22发表在【云服务器提供商】,文中图片由(业务大全)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://vps.7tqx.com/wenda/695479.html
发表评论