在发送到ftp服务器之前可以在本地临时存储文件吗?

时间:2013-12-06 13:40:45

标签: c# asp.net ftp

我有一个用于文件上传的ASP控件。当用户发布它时,它首先本地存储在我运行网站的位置,然后我将其复制到远程ftp服务器。

但是,一旦将其复制到ftp服务器,是否可以将其从本地服务器中删除?我想把它存放在一个~temp文件夹中,但我无法让它工作。截至目前,我需要在我的项目中创建一个名为“temp”的文件夹。有任何想法吗?方法如下:

            String id = Request.QueryString["ID"];
            String path = Server.MapPath("~/temp/");
            String filename = Path.GetFileName(fuPicture.PostedFile.FileName);

            if (fuPicture.HasFile)
            {
                try
                {
                    if (
                        fuPicture.PostedFile.ContentType == "image/jpeg" ||
                        fuPicture.PostedFile.ContentType == "image/png" ||
                        fuPicture.PostedFile.ContentType == "image/gif"
                        )
                    {
                        fuPicture.PostedFile.SaveAs(path + fuPicture.FileName);
                    }
                    else 
                    {
                        lblFeedback.Text = "Not allowed file extension";
                    }
                }
                catch (Exception ex)
                {
                    lblFeedback.Text = "Error when uploading";
                }
                path += fuPicture.FileName;

                String ftpServer = "ftp://xxxx:xxxx";

                String userName = "xx";
                String password = "xx";

                FtpWebRequest request = 
                    (FtpWebRequest)WebRequest.Create(new Uri("ftp://xxxx:xxxx/" + id));
                request.Method = WebRequestMethods.Ftp.MakeDirectory;
                request.Credentials = new NetworkCredential(userName, password);
                using (var resp = (FtpWebResponse)request.GetResponse()) 
                {
                    WebClient client = new WebClient();
                    client.Credentials = new NetworkCredential(userName, password);
                    client.UploadFile(ftpServer + "/" + id + "/" + 
                        new FileInfo(path).Name, "STOR", path);
                }

2 个答案:

答案 0 :(得分:0)

为什么在using语句之后不执行file.delete?

答案 1 :(得分:0)

您可以调用client.UploadData()从内存中上传字节数组,而根本不涉及本地磁盘。