用户上传文件后,后台文件处理,可离线,用什么可以实现?

shrekye 2009-03-17 05:21:01
用户要批量上传文件
上传后每个文件要经过处理
每个文件的处理时间可能有些长,大概10秒-几分钟
批量上传的时候不能让人等着呀
所以想用户上传后,就转为后台处理,用户可关闭浏览器
并且这个处理不能所有文件同时进行,否则资源占用率太高会死机
文件处理是用Process进行的,也就是说不能创建超过一个进程
第一个文件处理完毕,再处理第二个,处理状态在数据库中存放

那么这个功能怎么实现?用Timer?这个Timer在用户关闭浏览器后还会执行知道条件满足吗?
或者用web services?这个了解比较少,不知道能实现不
还是编写一个Windows Service?
请大家指教
...全文
217 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
wuyq11 2009-03-20
  • 打赏
  • 举报
回复
在多线程里实现线程延迟,处理数据
hamehameha 2009-03-20
  • 打赏
  • 举报
回复
web services
和多线程处理,具体要实验一下,不过思路不会错。而且人家也贴了些代码了,你看一下,主要是 System.Threading.ThreadPool.QueueUserWorkItem(ProcessFile, state);
线程放在web services 里开。。。。。
wfyfngu 2009-03-20
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 shrekye 的回复:]
唉......最近花了600分问了4个问题,没有一个有人提出建设性意见的
入门的时候csdn帮助好大的
提高的时候了,感觉就不太行了,都喜欢跑去答简单分高的
[/Quote]

注意看回复,很多时候问题可能出在自己身上,有时间抱怨不如去看看
ystem.Threading.ThreadPool.QueueUserWorkItem
这个方法,
如果想要进一步了解异步操作
可以多去看看这方面的例子,有很多类:
收IO操作限制的异步操作,受网络限制的异步操作,受CPU限制的异步操作。
wfyfngu 2009-03-20
  • 打赏
  • 举报
回复
反正也是闲着,我再写详细点

// 用户单击上传按钮的事件处理代码
proptected void BtnSubmit_Click(object sender, EventArgs e) {
// 读取上传的文件
HttpPostedFile file = Request.Files[0];
// 保存上传的文件到服务器
file.SaveAs("c:\somefile.ext");
// 文件保存成功,主线程结束,客户端可以关闭。
messageBox.Show("文件上传成功,正在处理您的文件"); // 通知客户端。
// 下面的代码将处理这个上传的文件
// 即使处理需要很长的时间,也不要求客户端保持连接。
object state = new string[]{"c:\somefile.ext"};
// 下面的代码将一个需要很长时间去执行的过程排队,
// 等CPU空闲的时候再执行ProcessFile这个方法
System.Threading.ThreadPool.QueueUserWorkItem(ProcessFile, state);
}

private void ProcessFile(string[] files) {
// TODO:这里是上传的文件处理代码
}
wfyfngu 2009-03-20
  • 打赏
  • 举报
回复
注意看完在7楼贴出的代码
明明都给出答案了。
空心兜兜 2009-03-19
  • 打赏
  • 举报
回复
离线?
单击按钮跳转到清除Session的页面,该页面redirect某页面
shrekye 2009-03-19
  • 打赏
  • 举报
回复
唉......最近花了600分问了4个问题,没有一个有人提出建设性意见的
入门的时候csdn帮助好大的
提高的时候了,感觉就不太行了,都喜欢跑去答简单分高的
shrekye 2009-03-19
  • 打赏
  • 举报
回复
嗯,客户端是个办法,主要是考虑上传量没有土豆那么大
还有维护成本,客户操作性考虑,还是想放到服务器上处理
如果用户不离线处理的方法已经写出来了
就是想让用户可以离线也能处理
zzc205 2009-03-18
  • 打赏
  • 举报
回复
基于纯Web没有太好的解决办法,可以考虑为这个功能提供一个客户端工具给用户,土豆上传大量视频都是这样做的。
shrekye 2009-03-18
  • 打赏
  • 举报
回复
我这个问题算是白问了
怎么都回答我上传啊

我后面解释好几遍了呀,上传没问题
只是不知道如何在用户可以关闭浏览器的情况下还能后台处理文件~~~

各位老大看看下面哦~
xingdongfang 2009-03-17
  • 打赏
  • 举报
回复
有一个FLASH来上传文件的项目 的,我感觉它比较符合你的需求。

你可以在网上找一下。
wenblue7 2009-03-17
  • 打赏
  • 举报
回复
web services
浪子-无悔 2009-03-17
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 wfyfngu 的回复:]



C# codeprivate void ProcessFile(string[] files) {
// 这里是上传的文件处理代码
}

// 将处理文件的任务排队,交给其它线程处理
object state = new string[]{"file1","file2"};
System.Threading.ThreadPool.QueueUserWorkItem(ProcessFile, state);
[/Quote]
顶~~~
shrekye 2009-03-17
  • 打赏
  • 举报
回复
这个... 我问题可能没说明白...
不是要多线程处理上传

是要在上传结束只后,还要对文件进行处理,比如格式转换,文字图片表头处理等等

我要问的是,想把上传和处理分开,用户只需要等待上传结束就行

后面的处理交给后台去做,可以关闭页面了

并且后台也不能多线程,会造成服务器死机

那么如何按队列的方式一个一个把文件都处理掉
a260881071 2009-03-17
  • 打赏
  • 举报
回复
不清楚
wfyfngu 2009-03-17
  • 打赏
  • 举报
回复


private void ProcessFile(string[] files) {
// 这里是上传的文件处理代码
}

// 将处理文件的任务排队,交给其它线程处理
object state = new string[]{"file1","file2"};
System.Threading.ThreadPool.QueueUserWorkItem(ProcessFile, state);

shrekye 2009-03-17
  • 打赏
  • 举报
回复
嗯,上传文件信息存到数据库里
是否处理过的状态也存在数据库就行,并且需求上应该不用删除

然后从数据库取出没处理过的文件,也就是跟你说的队列差不多了

不过Windows Service没做过呀,一直做asp.net了
不知道能不能实现
shangxb 2009-03-17
  • 打赏
  • 举报
回复
用户上传文件后将文件信息存入一个队列,后台从队列中取出一个进行处理,处理完后再取下一个,直到队列空。文件信息也可以存入数据表里,处理完后从表中删除。
这种功能感觉用Windows Service实现比较好~
shrekye 2009-03-17
  • 打赏
  • 举报
回复
哦,楼上理解错了,上传到服务器上这个过程必须在线呀
就是文件都上传完毕以后
还需要处理
想在文件都上传以后就可以转到后台处理
pgameli 2009-03-17
  • 打赏
  • 举报
回复
不可能关了浏览器还能上传文件啊
QQ邮箱中转站也有类似的功能
不过他可以把上传文件的进度条给最小化
并不影响用户对其他功能的操作
你可以参考一下
加载更多回复(2)
【资源介绍】 基于Java实现带图形用户界面的基于数据加密算法的即时聊天系统源码+项目说明+sql数据库.zip 本项目基于 Java 的 Swing 包实现了一个带图形用户界面的基于数据加密算法的即时聊天系统。实现用户登录及验证、在线聊天、好友管理、文件传输、聊天记录管理和数据传输加密等功能。 编程语言:Java; JDK 版本:1.8.0; 开发工具:IntelliJ IDEA(版本:2020.2.1); 数据库:MySQL(版本:8.0.19 for Win64 on x86_64); 服务器:阿里云服务器(版本:Windows Server 2019 数据中心版 64 位中文版) 程序架构:C/S 架构; 先运行 `LiveChat/Server.java` 文件,然后运行 `LiveChat/Client.java` 文件(支持多开)即可。 1. 用户登录: 用户在登录界面输入用户 ID 和密码点击登录,后台系统接收到数据后进行用户身份验证,若验证通过则进入系统主界面;若没有通过用户身份验证则显示错误。 2. 登录验证: 用户点击登录按钮后,后台系统接收到用户输入的信息后,在数据库的用户信息表进行查询,若验证成功则成功进入系统主界面;若验证失败则返回对应的错误信息。 3. 聊天功能: 在好友列表中选择一名好友后,打开与其聊天界面,若该好友在线,则可以向其发起即时聊天,对方收到消息后也会弹出聊天窗口。 4. 文件传输: 在与好友聊天时,可以进行文件/图片的发送,对方接收到文件后可以保存在聊天记录文件夹中。 5. 好友管理: 用户可以在好友列表中进行添加或删除好友,添加好友时会向对方发送申请,对方收到通知并通过申请后方能成为好友,好友列表的信息会存储在数据库中,在好友关系解除后该数据也会清除。 6. 在线、离线状态显示: 后台服务器动态地请求用户的所有好友的在线状态,并实时返回信息,以实现显示所有好友当前是否在线,达到较好的鲁棒性。 7. 聊天记录管理: 后台服务器将用户与好友的聊天记录以文件的形式存储于本地,用户无需配置数据库即可在本地导入聊天记录,以便聊天记录的查询。 8. 数据传输加密: 计算机网络安全最为重要的内容是为用户提供安全可靠的保密通信,其中最常用的手段是密码机制。在该系统中所采用的加密算法是 RSA 加密算法和 MD5 加密算法。其中用户的密码使用 MD5 加密后存储于数据库,用户用户间的聊天记录信息使用 RSA 加密算法后形成密文在后台服务器进行传输,好友经过共享密钥进行解密后才能得到明文,基于以上的加密操作来防止中间攻击导致的数据泄露, 【备注】 该项目是个人毕设/课设/大作业项目,代码都经过严格调试测试,功能ok才上传,可快速上手运行!欢迎下载使用,若遇到问题请及时私信沟通,帮助解决。 该资源主要针对计算机、通信、人工智能、自动化等相关专业的学生、老师或从业者下载使用,可直接作为期末课程设计、课程大作业、毕业设计等。 项目整体具有较高的学习借鉴价值!基础还可以,动手能力强的也可做二次开发,以实现不同的功能。 欢迎下载使用,也欢迎交流学习!
由于限制上传资源小于50M 所以这里面只是一个下载链接 115网盘的 ◆防止信息泄密,保护企业资料不被外泄。 ◆上网行为监控,IM聊天监控,提高员工工作效率。 ◆内网监控、管理、维护,让您更高效的管理内网计算机。 ◆收发邮件监控、备份、管理,方便企业对邮件信息进行管理。 ◆打印监控、管理,轻松掌控企业打印情况。 ◆完备的文件权限控制,满足企业个性化需求。 ◆快速可靠的多版本备份、恢复,可以帮助企业防范中断和灾难。 ◆支持linux系统下文件透明加密保护。 主要功能: •文件透明加密保护: 系统主要采用透明加解密技术对机密文件进行保护,防止信息泄密。所有加解密行为都在后台由系统自动完成,对用户完全透明。 • 多种工作模式: 系统包括密文生成模式和密文使用模式: 密文生成模式与目前市场上同类产品相同,采用强制加密技术将符合系统策略的机密文件进行加密,密文使用模式则由“鸿智安科”创新推出,采用选择性加解密技术只对原本是密文的文件进行保护, 而对明文文件不作任何处理实现了对同一类型文件的明文和密文作区分处理,开创了文件安全领域的新篇章! •灵活的文件多密级控制: 系统融入了“密钥分组”和“密钥分级”的概念。许多企业,对不同部门之间,和不通级别之间 都有着很细致的文件安全需求,“密钥分组”和“密钥分级”正是用于解决上述问题。企业可以根据 需要设置每个员工的密钥权限,确保每个员工只能使用其权限范围内的机密文件。 •内存监控: 全程监控机密文件在使用过程中的内存数据,任何妄图通过复制\粘贴、拖动或插入等手段将密文内容导入到明文的行为都将被阻止,并将留下审计日志,待日志审计员追查责任人。 •权限控制: 对密文的只读(密文使用模式下)、打印等权限进行控制,尤其是打印权限,目前市场上的产品普遍只能控制物理打印或者将物理打印和虚拟打印一并控制,而“鸿智安科”首推物理打印和虚拟打印区分控制:对于物理打印,企业可根据需要设置客户端用户是否可以对机密文件进行物理打印;对于虚拟打印,用户只能使用我们提供的两个虚拟打印机软件打印加密文件,并且打印出的文件依然是加密文件。 •外发文件控制: “鸿智数据安全管理系统”还可对外发到企业外部的机密文件进行有效控制,包括设置外发文件的生命周期,只读、打印等使用期限。目前市场上的产品普遍将内部文件保护和外发文件保护区分开来,并且外发文件只能以阅读器模式使用(即外发文件只能使用专门的浏览器查看,而不能对文件进行任何编辑),“鸿智安科”则将内部保护和外发保护无缝结合,一套系统即可解决两类问题,合力构建了一个全方位的文件安全体系。此外,经过外发处理文件保留了原有的编辑功能,对用户使用习惯不作任何改变。 •在线工作流: 系统提供在线工作流处理客户端用户需要解密和外发的文件。客户端用户只需提交申请,系统会根据设置的流程自动在后台进行处理,一旦请求被通过,被申请的源文件即被上传到管理中心,留待文件审计员日后审计。流水线式的工作模式大大提升了工作效率,减轻了用户负担,事后追踪机制更为机密文件的安全性增加了一份保障。 • 可信邮件: 可指定可信邮件地址,凡是发往可信邮件地址的邮件附件中包含的加密文件都将被自动解密。文件备份要保证机密文件的安全性,首先要保证机密文件的可用性。系统可以对机密文件进行多版本自动备份(最多可备份5个版本),提供本地备份和远程备份两种备份模式,提供密文备份和远程备份两种备份格式。让用户在任何时候都可高枕无忧! •离线控制: 对于需要脱离管理中心工作的客户端,管理员可为其发放外发eKey或设置离线工作权限使其可离线工作。无论何种方式,都可设置客户端用户离线使用的时间或次数对客户端的离线使用进行控制。将对机密文件的保护延伸到离线模式,既不影响客户端用户的正常工作,又保证了机密文件的安全性。 •Web访问控制: 可限定客户端能够访问的网址,并可对客户端访问过的网页进行审计。 •邮件审计: 可对客户端发送的邮件地址进行控制,并对客户端发送过的附件进行审计。 •聊天记录监控: 可对QQ以及MSN的聊天记录进行审计。 •进程管理: 可以指定客户端进程策略,指定在客户端能够运行或者禁止运行的进程。 •资产监控: 查询客户端的软、硬件资产信息。 •打印审计: 对客户端的打印文件内容进行审计。 •性能查询: 查询当前客户端CPU使用率和内存使用情况等。 •多级服务器: 系统可同时设置主服务器和备份服务器,备份服务器将同步主服务器的数据内容。当主服务器发生故障,无法正常运行时,客户端将自动切换、连接到备份服务器,从而保证了系统的正常运行。大大提高了系统的健壮性!而目前市场上大多数产品都采用单一服务器。 •日志审计 日志管理员可对系统生成的详尽日志进行审计,以便追查违规行为及追究相关责任人。

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧