0

ユーザーがファイル(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 からアップロードされたファイルのパスを取得する

4

3 に答える 3

1

クライアント マシン上のファイルのパスを取得できません。FileStrame には、開いたファイルのネイティブ ハンドルを含む Handle というプロパティがあります。次の記事に従うと、ハンドルでファイル名を取得するのに役立ちます。これは C++ ですが、すべての関数は API であり、P を使用して呼び出すことができます。 /C# で [DllImport] を呼び出します。

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

編集


申し訳ありませんが、Handle は廃止されました。代わりにSafeFileHandleを使用してください

于 2013-06-27T19:57:38.353 に答える
1

フルパスからファイル名を取得するには、次を使用できます。

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

それはあなたを与えるでしょうTest.docx

于 2013-06-27T19:58:08.160 に答える
0

1 - FileStream 内のファイルからファイル名を取得する

ストリームにはファイル名がありません。HttpPostedFileBaseコントローラー アクションがパラメーターとして受け取るインスタンスから、アップロードされたファイルのファイル名を取得できます。blog postASP.NET MVC アプリケーションでのファイルのアップロードについてPhil Haack が説明している記事をご覧ください。

ファイル システムに既にファイルを保存していると仮定すると、FileStream の Name プロパティからファイル名を取得できます。

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

2 - FileStream からアップロードされたファイルのパスを取得する

ストリームにはファイル名もファイルパスもありません。HttpPostedFileBase取得できるのは、コントローラーアクションがパラメーターとして受け取るインスタンスに含まれるファイル名だけです(前のポイントを参照)。

于 2013-06-27T19:54:46.723 に答える