2013-05-26 197 views
1

我想上传JPG文件到我在我的项目中创建的文件夹。图像上传在Asp.net中的图像文件夹问题

图像未保存在图像文件夹中。它在我上传时显示我的图像,但图像本身不存在于图像文件夹中。

这里是我使用的代码:

private void btnUpload_Click(object sender, System.EventArgs e) 
{ 
    // Initialize variables 
    string sSavePath; 
    string sThumbExtension; 
    int intThumbWidth; 
    int intThumbHeight; 

    // Set constant values 
    sSavePath = "images/"; 
    sThumbExtension = "_thumb"; 
    intThumbWidth = 160; 
    intThumbHeight = 120; 

    // If file field isn’t empty 
    if (filUpload.PostedFile != null) 
    { 
     // Check file size (mustn’t be 0) 
     HttpPostedFile myFile = filUpload.PostedFile; 
     int nFileLen = myFile.ContentLength; 
     if (nFileLen == 0) 
     { 
      lblOutput.Text = "No file was uploaded."; 
      return; 
     } 

     // Check file extension (must be JPG) 
     if (System.IO.Path.GetExtension(myFile.FileName).ToLower() != ".jpg") 
     { 
      lblOutput.Text = "The file must have an extension of JPG"; 
      return; 
     } 

     // Read file into a data stream 
     byte[] myData = new Byte[nFileLen]; 
     myFile.InputStream.Read(myData,0,nFileLen); 

     // Make sure a duplicate file doesn’t exist. If it does, keep on appending an 
     // incremental numeric until it is unique 
     string sFilename = System.IO.Path.GetFileName(myFile.FileName); 
     int file_append = 0; 
     while (System.IO.File.Exists(Server.MapPath(sSavePath + sFilename))) 
     { 
      file_append++; 
      sFilename = System.IO.Path.GetFileNameWithoutExtension(myFile.FileName) 
          + file_append.ToString() + ".jpg"; 
     } 

     // Save the stream to disk 
     System.IO.FileStream newFile 
       = new System.IO.FileStream(Server.MapPath(sSavePath + sFilename), 
              System.IO.FileMode.Create); 
     newFile.Write(myData,0, myData.Length); 
     newFile.Close(); 

     // Check whether the file is really a JPEG by opening it 
     System.Drawing.Image.GetThumbnailImageAbort myCallBack = 
         new System.Drawing.Image.GetThumbnailImageAbort(ThumbnailCallback); 
     Bitmap myBitmap; 
     try 
     { 
      myBitmap = new Bitmap(Server.MapPath(sSavePath + sFilename)); 

      // If jpg file is a jpeg, create a thumbnail filename that is unique. 
      file_append = 0; 
      string sThumbFile = System.IO.Path.GetFileNameWithoutExtension(myFile.FileName) 
                + sThumbExtension + ".jpg"; 
      while (System.IO.File.Exists(Server.MapPath(sSavePath + sThumbFile))) 
      { 
       file_append++; 
       sThumbFile = System.IO.Path.GetFileNameWithoutExtension(myFile.FileName) + 
           file_append.ToString() + sThumbExtension + ".jpg"; 
      } 

      // Save thumbnail and output it onto the webpage 
      System.Drawing.Image myThumbnail 
        = myBitmap.GetThumbnailImage(intThumbWidth, 
               intThumbHeight, myCallBack, IntPtr.Zero); 
      myThumbnail.Save (Server.MapPath(sSavePath + sThumbFile)); 
      imgPicture.ImageUrl = sSavePath + sThumbFile; 

      // Displaying success information 
      lblOutput.Text = "File uploaded successfully!"; 

      // Destroy objects 
      myThumbnail.Dispose(); 
      myBitmap.Dispose(); 
     } 
     catch (ArgumentException errArgument) 
     { 
      // The file wasn't a valid jpg file 
      lblOutput.Text = "The file wasn't a valid jpg file."; 
      System.IO.File.Delete(Server.MapPath(sSavePath + sFilename)); 
     } 
    } 
} 

public bool ThumbnailCallback() 
{ 
    return false; 
} 
+0

请您的具体问题,更新您的标题http://meta.stackexchange.com/questions/10647/how-do-i-write-a-good-title –

+0

的原因可能是'Anonymous'登录或'IISUSRS'没有写入你的'images'文件夹的权限。 –

+0

我可以让那件事发生吗? –

回答

0

我会感到惊讶,如果它不存在myThumbnail.Save (Server.MapPath(sSavePath + sThumbFile));工作你试图映射文件中的行...

尝试

myThumbnail.Save(Server.MapPath(sSavePath) + sThumbFile));

+0

没有它很好 –

+0

我不知道你是否发现了差异,在我的解决方案中,我先映射没有文件名的文件夹,然后添加文件名,而将整个路径映射到文件名 – Ted