2015-05-14 86 views
0

Iam在ASP.NET中開發網站時很新穎,或者僅僅是一般的網站。錯誤:「無法找到路徑的一部分」

我編寫了一個網站,它在Localhost上工作得很好,但是當我把它放到網上時,當我嘗試上傳文件時出現此錯誤。

代碼:

FileUpload_Billede.SaveAs(Server.MapPath("~/img/upload/") + FileUpload_Billede.FileName); 
MakeThumb(FileUpload_Billede.FileName, "img/upload/", 295, "/img/sponsor/"); 

我已經把其他網站還是在同webhotel,我也用的FileUpload,尚未出現任何錯誤。

我在網上看了很多說它是IIS導致問題。我從來沒有碰過IIS,這就是爲什麼我不明白爲什麼現在會有問題呢?在這種情況下,我不知道如何在IIS管理器程序中執行操作。我希望有人能幫助我,因爲我完全迷失了。

讓我知道你是否需要更多的信息。

編輯:我被要求編寫MakeThumb方法的定義。那就是:

private void MakeThumb(string Filename, string UploadFolder, int bredde, string thumbuploadfolder) 
{ 
    // Kompliceret Kode fundet fra nettet om upload og skalering af billede. 

    // find det uploadede image 
    System.Drawing.Image OriginalImg = System.Drawing.Image.FromFile(Server.MapPath("~/") + UploadFolder + Filename); 

    // find højde og bredde på image 
    int originalWidth = OriginalImg.Width; 
    int originalHeight = OriginalImg.Height; 

    // bestem den nye bredde på det thumbnail som skal laves 
    int newWidth = bredde; 

    // beregn den nye højde på thumbnailbilledet 
    double ratio = newWidth/(double)originalWidth; 
    int newHeight = Convert.ToInt32(ratio * originalHeight); 


    Bitmap Thumb = new Bitmap(newWidth, newHeight, PixelFormat.Format24bppRgb); 
    Thumb.SetResolution(OriginalImg.HorizontalResolution, OriginalImg.VerticalResolution); 

    // Hvis billedet indeholder nogen form for transperans 
    //(mere eller mindre gennemsigtig, eller en gennemsigtig baggrund) bliver det gjort her 
    Thumb.MakeTransparent(); 


    // opret det nye billede 
    Graphics ThumbMaker = Graphics.FromImage(Thumb); 
    ThumbMaker.InterpolationMode = InterpolationMode.HighQualityBicubic; 

    ThumbMaker.DrawImage(OriginalImg, 
     new Rectangle(0, 0, newWidth, newHeight), 
     new Rectangle(0, 0, originalWidth, originalHeight), 
     GraphicsUnit.Pixel); 

    // encoding 
    ImageCodecInfo encoder; 
    string fileExt = System.IO.Path.GetExtension(Filename); 
    switch (fileExt) 
    { 
     case ".png": 
      encoder = GetEncoderInfo("image/png"); 
      break; 

     case ".gif": 
      encoder = GetEncoderInfo("image/gif"); 
      break; 

     default: 
      // default til JPG 
      encoder = GetEncoderInfo("image/jpeg"); 
      break; 
    } 

    EncoderParameters encoderParameters = new EncoderParameters(1); 
    encoderParameters.Param[0] = new EncoderParameter(Encoder.Quality, 100L); 

    // gem thumbnail i mappen /Images/Uploads/Thumbs/ 
    Thumb.Save(Server.MapPath("~") + thumbuploadfolder + Filename, encoder, encoderParameters); 

    // Fjern originalbilledet, thumbnail mm, fra computerhukommelsen 
    OriginalImg.Dispose(); 
    ThumbMaker.Dispose(); 
    Thumb.Dispose(); 

} 
+0

請張貼另存爲和MakeThumb函數定義。 –

+0

SaveAs是默認定義的,不是由我定義的。我發佈了MakeThumb的定義。 – Vexityy

+0

在'FileUpload_Billede.SaveAs(Server.MapPath(「〜/ img/upload /」)+ FileUpload_Billede.FileName)中放置一個斷點;'看看路徑是什麼 – Izzy

回答

0

嘗試添加DMS文件夾在您的主要網站的文件夾,然後從屬性更改權限,使每個人都可以對這個文件夾的讀/寫

0

你必須確保其img /上傳文件夾存在於你的服務器上,它應該是可訪問的。

+0

該文件夾已經存在。正如我所說,當我在Localhost上運行網站時,我可以毫無問題地上傳。當我嘗試從在線網站上傳文件時,就會出現問題。但文件夾也在那裏。 – Vexityy

0

確切地檢查錯誤的位置並縮小到這個範圍 - 我們不需要MakeThumb的完整實現,只需要錯誤的位。

文件夾可能存在,但應用程序的應用程序池的標識可能無法訪問。

檢查兩個文件夾(一些評論提及的「文件夾」,但拇指被保存到不同的文件夾中。

如果可能的話,與調試(而不是發佈)部署到獲得行號,如果沒有,你也使用不同的實現對於這些 - 試圖保存

很可能的.SaveAs之一,FromFileThumb.Save前加入一些記錄(如log4net的),或跟蹤,並添加路徑的細節

使用System.IO.Directory.Exists()

作爲一個額外的:總是使用Path.System.IO.Path.Combine()所以沒有額外的//可能性,可以引起問題

相關問題