首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >对上载的文件.NET执行进程

对上载的文件.NET执行进程
EN

Stack Overflow用户
提问于 2010-12-07 04:37:37
回答 3查看 1.7K关注 0票数 0

我是用ASP.NET 3.5编程的。

我需要处理一个必须由用户上传的文件。该文件采用特定的格式。基本上,我需要获取文件中的信息,对其进行解析,然后将其插入到SQL数据库中。我这样做没有问题,但我想知道如何在网站上做到这一点。

我想要创建一个用户有权访问的共享,让用户将文件上传到共享,然后在上传时,使用完整的UNC路径将记录保存到数据库中。在站点中,处理具有该UNC路径的文件,然后将该文件移动到某个“已处理”文件夹中。

有没有人做过这样的事情?有没有什么“标准”的方法来做类似的事情?

谢谢。

EN

回答 3

Stack Overflow用户

发布于 2010-12-07 04:42:11

我不知道这是否对您有帮助,但是您可以在名称空间System.Web.UI.WebControls中使用FileUpload类。

你可以查看MSDN:here

票数 2
EN

Stack Overflow用户

发布于 2010-12-07 04:45:30

1)创建一个带有上传输入的ASPX页面。

2)让用户上传文件

3)获取ASP.NET上传的文件,将二进制流写入文件,并将文件注册到数据库

4)完成请求,但在此之前生成一个后台线程来处理文件

5)对于那些已经注册但由于某种原因无法处理的文件,您需要一个单独的清理操作。

票数 0
EN

Stack Overflow用户

发布于 2010-12-07 04:54:05

最快的解决方案-如果您的文件处理将在脚本超时之前完成,并且您乐于让用户在此期间等待:

将您网站上的虚拟目录映射到您的上传文件夹-在我们的网站上,我们将所有web服务器上的/~ upload /映射到DMZ中的文件服务器上的开放共享。

然后在页面代码隐藏中使用类似下面这样的代码

代码语言:javascript
运行
复制
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服务或计划任务)来处理文件处理,然后返回“请稍候...”然后在代码隐藏中查询队列中文件的状态,并在每个文件的处理完成时报告它们。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4370706

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档