私はmvc 2010 Expressを使用してc#でアプリケーションを作成しています。ある時点で、ユーザーはファイルをアップロードして、データベースとの間で開いたりダウンロードしたりできます。
ファイルを保存するテーブルは次のとおりです。
CREATE TABLE [dbo].[tClientsFiles](
[IdClient] [int] NOT NULL,
[IdFile] [int] IDENTITY(1,1) NOT NULL,
[Name] [varchar](256) NULL,
[Type] [varchar](256) NULL,
[Lenght] [money] NULL,
[Content] [varbinary](max) NULL,
[DateAdd] [datetime] NULL,
[UserAdd] [varchar](50) NULL)
tClientsFiles.Name には、ファイルのパスと名前を次のように格納uploadFile.FileName;
しuploadFile
ますHttpPostedFileBase
。たとえば、ファイルがTest.txt
ユーザーのデスクトップにある場合、それは保存されますC:\Users\user\Desktop\test.txt
次に、ファイルを表示/ダウンロードすると、次のファイルへのリンクがありActionResult
ますController
。
public ActionResult GetFile(int id)
{
var file = dre.tClientsFiles.First(m => m.IdFile == id);
MemoryStream ms = new MemoryStream(file.Content, 0, 0, true, true);
Response.ContentType = file.Type;
Response.AddHeader("content-disposition", "attachment;filename=" + file.Name);
Response.Buffer = true;
Response.Clear();
Response.OutputStream.Write(ms.GetBuffer(), 0, ms.GetBuffer().Length);
Response.OutputStream.Flush();
Response.End();
return new FileStreamResult(Response.OutputStream, file.Type);
}
file.Name
ファイルを開くと、次のように「名前」で名前が付けられますc_Users_user_Desktop_Test
。
私の質問は次のとおりです。「本当の名前」だけで名前Response.AddHeader
を付ける方法はありますか (おそらく myを変更します) 。(つまり、私たちの例では:)または、名前とそのパス全体ではなく「実際の名前」だけを保存するように、名前を別の方法で保存する方法はありますか?Test
お時間をありがとうございました!