我允许用户上传文件(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获取上传文件的路径
答案 0 :(得分:1)
您无法在客户端计算机上获取该文件的路径。 FileStrame有一个名为Handle的属性,它包含打开文件的本机句柄,你按照下面的文章它将帮助你通过句柄获取文件名,它是在C ++中但所有函数都是API可以用P调用/在C#[DllImport]中调用。
http://msdn.microsoft.com/en-us/library/windows/desktop/aa366789(v=vs.85).aspx
修改强>
抱歉Handle已经过时使用 SafeFileHandle 而不是
答案 1 :(得分:1)
要从完整路径中获取文件名,您可以使用:
Path.GetFileName(".././Test.docx")
它会给你Test.docx
答案 2 :(得分:0)
1 - 从FileStream中的文件获取文件名
流中没有文件名。您可以从控制器操作接收的HttpPostedFileBase
实例获取上载文件的文件名作为参数。看看Phil Haack的blog post
关于在ASP.NET MVC应用程序中上传文件的问题,并在其中说明了这一点。
假设您已将文件存储在文件系统中,则可以从FileStream的Name属性中检索文件名:
string filename = Path.GetFileName(fileStream.Name);
2 - 从FileStream获取上传文件的路径
流中没有文件名或文件路径。您可以获得的所有内容都是控制器操作应作为参数接收的HttpPostedFileBase
实例中包含的文件名(请参阅上一点)。