2013-12-06 4 views
0

У меня есть элемент управления ASP для загрузки файлов. Когда пользователь отправляет его, он сначала локально сохраняется там, где я запускаю веб-сайт, а затем копирую его на удаленный ftp-сервер.Можно временно сохранить файл локально перед отправкой на 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); 
       } 
+0

В чем проблема? Что не работает? – SLaks

+1

'Path.GetTempPath()' – SLaks

+0

@SLaks Проблема в том, что я хочу только временно сохранить файл, то есть хочу, чтобы он исчез с локального сервера, как только он скопирован на сервер Ftp. – guitarzero

ответ

0

Вы можете позвонить client.UploadData(), чтобы загрузить массив байтов из памяти, без привлечения вашего локального диска вообще.

+0

http://stackoverflow.com/a/359984/34397 – SLaks

0

Почему вы не делаете file.delete после использования инструкции?

+0

Это то, с чем я пошел, и спасибо за ваше время и знания, хотя SLaks был первым :) – guitarzero

Смежные вопросы