途牛网站建设策划书网站建设费用账务处理
2026/4/17 4:58:42 网站建设 项目流程
途牛网站建设策划书,网站建设费用账务处理,wordpress怎样比较安全,青岛seo网站推广文件管理系统毕业设计#xff1a;从IE8兼容到百万梦想的奇幻漂流 大家好#xff0c;我就是那个被IE8折磨到怀疑人生的通讯专业大三狗。本来以为做个文件管理系统毕业设计撑死两周搞定#xff0c;没想到这项目直接让我体验了一把全栈工程师的酸爽人生。 需求分…文件管理系统毕业设计从IE8兼容到百万梦想的奇幻漂流大家好我就是那个被IE8折磨到怀疑人生的通讯专业大三狗。本来以为做个文件管理系统毕业设计撑死两周搞定没想到这项目直接让我体验了一把全栈工程师的酸爽人生。需求分析我的毕业设计规格比阿里云还高老师看完需求文档后的表情be like → → → 10G文件上传我家NAS都没这么大容量IE8兼容这浏览器比我表弟年龄还大信创全家桶红莲花浏览器这名字听着就像要渡我成佛断点续传持久化要求比我的婚姻观还坚定虽然我母胎solo文件夹层级保留这功能百度网盘SVIP都要加钱吧技术选型从现代到复古的时空穿越// 前端大文件上传核心逻辑 (原生JS WebUploader)classMegaUploader{constructor(){this.uploadernull;this.ieModethis.detectIE();// 检测IE版本this.initUploader();}// IE版本检测比检测新冠病毒还复杂detectIE(){constuawindow.navigator.userAgent;constmsieua.indexOf(MSIE );if(msie0)returnparseInt(ua.substring(msie5,ua.indexOf(.,msie)),10);returnfalse;}initUploader(){if(this.ieModethis.ieMode9){// IE专属Flash方案仿佛回到2010年this.initFlashUploader();}else{// 现代浏览器H5方案this.initH5Uploader();}}// H5上传方案主推initH5Uploader(){this.uploadernewWebUploader.create({// 基础配置dnd:#filePicker,disableGlobalDnd:true,paste:document.body,swf:/static/Uploader.swf,// 给IE准备的备胎server:/api/upload,fileSizeLimit:10*1024*1024*1024,// 10GBfileSingleSizeLimit:5*1024*1024*1024,// 5GB单文件限制// 分片配置chunked:true,chunkSize:2*1024*1024,// 2MB每片threads:3,// 并发数chunkRetry:2,// 失败重试// 文件夹上传配置duplicate:true,accept:{title:Files,extensions:*,mimeTypes:*}});this.bindEvents();}// 绑定事件比绑螃蟹还复杂bindEvents(){// 文件添加事件this.uploader.on(fileQueued,file{console.log(文件${file.name}已添加大小${this.formatSize(file.size)});this.saveToIndexedDB(file);// 持久化存储文件信息});// 分片上传前加密this.uploader.on(uploadBeforeSend,(block,data){data.chunkblock.chunk;data.chunksblock.chunks;data.fileIdblock.file.id;data.tokenthis.generateToken(block.file);});// 上传进度this.uploader.on(uploadProgress,(file,percentage){this.saveProgress(file,percentage);// 保存进度到本地});}// 加密函数假装很安全generateToken(file){returnbtoa(${file.name}:${file.size}:${Date.now()});}// 更多方法...}后端C#处理老将新传// UploadHandler.ashx 文件分片处理 (C# WebForm)publicclassUploadHandler:IHttpHandler{publicvoidProcessRequest(HttpContextcontext){context.Response.ContentTypeapplication/json;try{// 验证Tokenif(!ValidateToken(context.Request[token])){context.Response.Write(JsonConvert.SerializeObject(new{error非法请求}));return;}varchunkcontext.Request[chunk]!null?int.Parse(context.Request[chunk]):0;varchunkscontext.Request[chunks]!null?int.Parse(context.Request[chunks]):1;varfileIdcontext.Request[fileId];varfileNamecontext.Request[name]??unknown;// 处理文件分片HttpPostedFilefilecontext.Request.Files[0];stringtempPathPath.Combine(ServerConfig.TempDir,fileId);// 确保目录存在Directory.CreateDirectory(tempPath);// 写入分片文件stringchunkPathPath.Combine(tempPath,chunk.ToString());using(varfsFile.OpenWrite(chunkPath)){file.InputStream.CopyTo(fs);}// 如果是最后一个分片则合并if(chunkchunks-1){MergeFiles(tempPath,fileName,chunks);EncryptAndSaveToOSS(fileName);// 加密后存OSS}context.Response.Write(JsonConvert.SerializeObject(new{successtrue,chunkchunk}));}catch(Exceptionex){context.Response.Write(JsonConvert.SerializeObject(new{errorex.Message}));}}// 合并分片文件privatevoidMergeFiles(stringtempPath,stringfileName,inttotalChunks){stringdestPathPath.Combine(ServerConfig.UploadDir,fileName);using(vardestStreamFile.Create(destPath)){for(inti0;itotalChunks;i){stringchunkPathPath.Combine(tempPath,i.ToString());using(varsourceStreamFile.OpenRead(chunkPath)){sourceStream.CopyTo(destStream);}File.Delete(chunkPath);}}Directory.Delete(tempPath);}// 更多方法...}数据库设计比相亲简历还详细-- SQL Server 数据库表设计CREATETABLE[dbo].[FileRecords]([Id]UNIQUEIDENTIFIERPRIMARYKEYDEFAULTNEWID(),[FileName]NVARCHAR(255)NOTNULL,[FileSize]BIGINTNOTNULL,[FileHash]VARCHAR(64)NOTNULL,[StoragePath]NVARCHAR(512)NOTNULL,[EncryptKey]VARCHAR(512)NOTNULL,-- 加密密钥[UploadTime]DATETIMEDEFAULTGETDATE(),[UserId]INTNOTNULL,-- 关联用户[FolderId]UNIQUEIDENTIFIERNULL-- 文件夹关联);CREATETABLE[dbo].[UploadProgress]([FileId]UNIQUEIDENTIFIERPRIMARYKEY,[UserId]INTNOTNULL,[TotalChunks]INTNOTNULL,[CompletedChunks]INTNOTNULL,[LastUpdate]DATETIMEDEFAULTGETDATE(),[BrowserInfo]NVARCHAR(MAX)NULL-- 存储浏览器指纹信息);遇到的坑比我的发际线还高IE8兼容地狱Flash需要用户手动点击才能激活控制台输出要用window.console.log判断存在性AJAX请求要特殊处理信创浏览器适配龙芯浏览器的内核是Mozilla还是Chromium不它是薛定谔的内核红莲花浏览器居然不支持ES6的箭头函数持久化存储方案IE8只能用userData或Cookie现代浏览器用IndexedDB信创浏览器看心情选择存储方式文件夹上传WebUploader的文件夹上传在IE下是废的要自己用递归处理FileSystem API求职宣言全栈苦力在线接单通过这个项目我掌握了考古学IE8适配密码学虽然只是调库心理学调试时的自我疏导金融学算红包提成求工作推荐要求不用兼容IE6这是我的底线老板不要求这个需求很简单最好能报销生发液P.S. 那个QQ群红包是真的我已经靠提成实现奶茶自由了虽然还没收到钱实用代码片段文件夹上传处理// 文件夹上传处理 (现代浏览器)functionhandleFolderUpload(folder){constentries[];// 递归读取文件夹内容functionreadDirectory(directory,path){constreaderdirectory.createReader();reader.readEntries(entries{entries.forEach(entry{if(entry.isFile){entry.file(file{file.fullPathpathfile.name;// 保留路径信息entries.push(file);});}elseif(entry.isDirectory){readDirectory(entry,pathentry.name/);}});});}readDirectory(folder);// 上传所有文件returnPromise.all(entries.map(file{returnnewPromise((resolve,reject){constformDatanewFormData();formData.append(file,file);formData.append(path,file.fullPath);fetch(/api/upload,{method:POST,body:formData}).then(resolve).catch(reject);});}));}// IE下的替代方案使用ActiveXfunctionieHandleFolderUpload(){// 这个代码太血腥了就不展示了alert(请升级浏览器到IE10以上或使用现代浏览器);}总结毕业设计改变人生这个项目教会我永远不要在需求评审时说这个简单信创浏览器是检验真爱的新标准10G文件上传前记得清理C盘QQ群红包可能是新型庞氏骗局但我还是想要真诚求工作推荐会修打印机能装Windows 7那种设置框架安装.NET Framework 4.7.2https://dotnet.microsoft.com/en-us/download/dotnet-framework/net472框架选择4.7.2添加3rd引用编译项目NOSQLNOSQL无需任何配置可直接访问页面进行测试SQL使用IIS大文件上传测试推荐使用IIS以获取更高性能。使用IIS Express小文件上传测试可以使用IIS Express创建数据库配置数据库连接信息检查数据库配置访问页面进行测试相关参考文件保存位置效果预览文件上传文件刷新续传支持离线保存文件进度在关闭浏览器刷新浏览器后进行不丢失仍然能够继续上传文件夹上传支持上传文件夹并保留层级结构同样支持进度信息离线保存刷新页面关闭页面重启系统不丢失上传进度。下载完整示例下载完整示例

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询