ASP.NET C# - Save FileStream on server

2019-03-04 00:54发布

I got beginners question.

How to save a file stream to a file on server?!

I got this:

var source = Request.QueryString["src"];
WebClient webclient = new WebClient();
using (Stream stream = webclient.OpenRead(source))
{
   Bitmap iconbitmap = new Bitmap(System.Drawing.Image.FromStream(stream));
   FileStream os = new FileStream("./asdasdasd.ico", FileMode.Create);

   var ic = MakeIcon(iconbitmap, 16, false); /// function returns an icon

   ic.Save(os);
}

My problem is than when I run code in ASP.NET Development Server it saves "asdasdasd.ico" into: C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\asdasdasd.ico

And, when I run it on remote server got error.

I want to save it into: www.my-web-site.com/output/asdasdasd.ico

Thank you very much.

3条回答
该账号已被封号
2楼-- · 2019-03-04 01:20

Use Server.MapPath() (also a using block for closing the file would help):

using(FileStream os = new FileStream(Server.MapPath("/output/asdasdasd.ico"), FileMode.Create))
{
   var ic = MakeIcon(iconbitmap, 16, false); /// function returns an icon
   ic.Save(os);
}
查看更多
Melony?
3楼-- · 2019-03-04 01:30

You can use code to get the website's directory and form your own file path.

See this question for how to get the website's directory.

How to get website's physical path on local IIS server? (from a desktop app)

查看更多
小情绪 Triste *
4楼-- · 2019-03-04 01:34

You need to map your server's path :

If memory serves me right, you can use something like :

HttpContext.Current.Server.MapPath("~/MyPathToSomething");

Note that the path string must start with the tilde character.

Regards

查看更多
登录 后发表回答