我是用ASP.NET 3.5编程的。
我需要处理一个必须由用户上传的文件。该文件采用特定的格式。基本上,我需要获取文件中的信息,对其进行解析,然后将其插入到SQL数据库中。我这样做没有问题,但我想知道如何在网站上做到这一点。
我想要创建一个用户有权访问的共享,让用户将文件上传到共享,然后在上传时,使用完整的UNC路径将记录保存到数据库中。在站点中,处理具有该UNC路径的文件,然后将该文件移动到某个“已处理”文件夹中。
有没有人做过这样的事情?有没有什么“标准”的方法来做类似的事情?
谢谢。
发布于 2010-12-07 04:42:11
我不知道这是否对您有帮助,但是您可以在名称空间System.Web.UI.WebControls中使用FileUpload类。
你可以查看MSDN:here
发布于 2010-12-07 04:45:30
1)创建一个带有上传输入的ASPX页面。
2)让用户上传文件
3)获取ASP.NET上传的文件,将二进制流写入文件,并将文件注册到数据库
4)完成请求,但在此之前生成一个后台线程来处理文件
5)对于那些已经注册但由于某种原因无法处理的文件,您需要一个单独的清理操作。
发布于 2010-12-07 04:54:05
最快的解决方案-如果您的文件处理将在脚本超时之前完成,并且您乐于让用户在此期间等待:
将您网站上的虚拟目录映射到您的上传文件夹-在我们的网站上,我们将所有web服务器上的/~ upload /映射到DMZ中的文件服务器上的开放共享。
然后在页面代码隐藏中使用类似下面这样的代码
protected void ProcessFilesButton_Click(object sender, EventArgs e) {
string uploadRootPath = Server.MapPath("~/upload/");
foreach(var uploadedFile in Request.Files) {
// might want to use a GUID filename here instead
// to avoid risk of filename conflicts.
string bareFileName = Path.GetFileName(uploadedFile.FileName);
string fullFilePath = Path.Combine(uploadRootPath, bareFileName);
uploadedFile.SaveAs(fullFilePath);
myMagicFileProcessor.ProcessFile(fullFilePath);
}
MyLabel.Text = String.Format("{0} files processed", Request.Files.Count);
}更复杂的解决方案包括派生一个后台线程(或单独的Windows服务或计划任务)来处理文件处理,然后返回“请稍候...”然后在代码隐藏中查询队列中文件的状态,并在每个文件的处理完成时报告它们。
https://stackoverflow.com/questions/4370706
复制相似问题