【问题标题】:handling an uploaded file via FileStream通过 FileStream 处理上传的文件
【发布时间】:2013-06-27 19:37:51
【问题描述】:

我允许用户上传文件(doc、pdf、excel、txt),然后我传入 FileStream 进行读取然后写入,但打开它后我正在调用存储过程,以便我可以存储文件名,日期,上传用户以及我将在哪里复制它。我的问题是如何处理已在 FileStream 中传递的字符串文件名,而存储过程需要一个字符串文件名。

string docx = @"../../TestFiles/Test.docx";
try
 {
     FileStream fileStream = new FileStream(docx, FileMode.Open, FileAccess.Read);
     docConverter.UpLoadFile(11, "Test.docx", "../../TestFiles/", 1, "../../Temp/", 89);
 }

public void UpLoadFile(int studentId, string rawStoragePath, int uploadedByUserId,   string storagePath, int assignmentElementsId)
 {
     Guid strGUID = Guid.NewGuid();
     DateTime uploadDate = DateTime.UtcNow;

     //calling stored procedure                
     stuSubSvc.UploadWork(studentId, strGUID, (need to pass file name), rawStoragePath,  uploadDate, uploadedByUserId, storagePath, 0, assignmentElementsId);
 }

帮助:
1 - 从 FileStream 中的文件中获取文件名
2 - 从 FileStream 获取上传文件的路径

【问题讨论】:

  • 在您的示例中使用 rawStoragePath 怎么样,因为它本身就是一个文件名。
  • @vendettamit 我想我可以使用 fileStream.Name 来获取正在上传的文件的完整路径,但是有没有办法让我得到 'Test.docx' 而不是 '../. ./Test.docx'?
  • 试试 Path.GetFileName(".././Test.docx")

标签: c# asp.net-mvc filestream


【解决方案1】:

要从完整路径中获取文件名,您可以使用:

Path.GetFileName(".././Test.docx")

它会给你Test.docx

【讨论】:

    【解决方案2】:

    您无法在客户端计算机上获取文件的路径。 FileStrame 有一个名为 Handle 的属性,其中包含打开文件的本机句柄,您按照以下文章将帮助您通过句柄获取文件名,它是在 C++ 中,但所有函数都是 API 可以使用 P 调用/在 C# [DllImport] 中调用。

    http://msdn.microsoft.com/en-us/library/windows/desktop/aa366789(v=vs.85).aspx

    编辑


    抱歉,Handle 已过时,请改用 SafeFileHandle

    【讨论】:

      【解决方案3】:

      1 - 从 FileStream 中的文件中获取文件名

      流中没有文件名。您可以从控制器操作作为参数接收的HttpPostedFileBase 实例获取上传文件的文件名。看看 Phil Haack 的 blog post 关于在 ASP.NET MVC 应用程序中上传文件,他在其中说明了这一点。

      假设您已经将文件存储在文件系统中,您可以从 FileStream 的 Name 属性中检索文件名:

      string filename = Path.GetFileName(fileStream.Name);
      

      2 - 从 FileStream 中获取上传文件的路径

      流中没有文件名或文件路径。您所能希望得到的只是包含在HttpPostedFileBase 实例中的文件名,您的控制器操作应将其作为参数接收(请参阅上一点)。

      【讨论】:

        猜你喜欢
        • 2010-12-28
        • 1970-01-01
        • 2010-09-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-04-08
        相关资源
        最近更新 更多