2015-05-14 117 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()所以没有额外的//可能性,可以引起问题

相关问题