As far as I know you cannot get the full path. It has something to do with security.
Anyhow, you do not need it since you will be saving the stream to whever you like.
Update:
Some bare-bones code:
var file = Request.Files[0];
if (file == null || file.ContentLength == 0)
{
throw new InvalidOperationException("No file has been selected for upload or the file is empty.");
}
file.SaveAs(path); // <-- path is somewhere on you *local* drive
or into a database:
Data Structure
CREATE TABLE [dbo].[SystemImage](
[Id] [uniqueidentifier] NOT NULL,
[ImageData] [image] NOT NULL,
CONSTRAINT [PK_SystemImage] PRIMARY KEY CLUSTERED
(
[Id] ASC
) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
ALTER TABLE [dbo].[SystemImage] ADD CONSTRAINT [DF_SystemImage_Id] DEFAULT (newid()) FOR [Id]
GO
Code
using (var connection = new SqlConnection(@"data source=.\SQLEXPRESS;initial catalog=ImageTest;Integrated Security=SSPI;"))
{
connection.Open();
using (var command = connection.CreateCommand())
{
command.CommandType = CommandType.Text;
command.CommandText = "insert into SystemImage (ImageData) values (@ImageData)";
command.Parameters.AddWithValue("ImageData", file.InputStream.ToBytes());
command.ExecuteNonQuery();
}
}
For the Stream.ToBytes()
extensions method see this link:
http://shuttle.codeplex.com/SourceControl/changeset/view/3f7f1f2cf2c0#Shuttle.Core%2fsource%2fShuttle.Core.Infrastructure%2fExtensions%2fStreamExtensions.cs