2010-06-24 2 views
0

이미지를 업로드 할 때이 오류가 표시됩니다. 제발 도와 줄 수 있습니까?사진 업로드 중 (다른 프로세스에서 사용 중이기 때문에)?

프로세스가 다른 프로세스에서 사용 중이기 때문에 'C : \ Websites \ telugufilmchance \ httpdocs \ User \ photo \ thumb \ PPTS00025sonali.jpeg'파일에 액세스 할 수 없습니다. 설명 : 현재 웹 요청을 실행하는 동안 처리되지 않은 예외가 발생했습니다. 오류 및 코드에서 시작된 위치에 대한 자세한 정보는 스택 추적을 검토하십시오.

예외 정보 : System.IO.IOException : 프로세스가 다른 프로세스에서 사용 중이므로 'C : \ Websites \ telugufilmchance \ httpdocs \ User \ photo \ thumb \ PPTS00025sonali.jpeg'파일에 액세스 할 수 없습니다.

소스 오류 :이 내 코드입니다

if (ext == ".JPEG" || ext == ".JPG" || ext == ".PNG" || ext == ".BMP" || ext == ".GIF") 
Line 193:   { 
Line 194:    fupPhoto.PostedFile.SaveAs(path + filename); 
Line 195:    Bitmap src = Bitmap.FromStream(fupPhoto.PostedFile.InputStream) as Bitmap; 
Line 196:    Bitmap result = ResizeBitmap(src); 

if (fupPhoto.FileName != string.Empty) 
     { 
      filename = ran(fupPhoto.FileName); 
      FileInfo fi = new FileInfo(filename); 
      string ext = fi.Extension.ToUpper(); 
      string path = Server.MapPath("../User/photo/thumb/");    
      if (ext == ".JPEG" || ext == ".JPG" || ext == ".PNG" || ext == ".BMP" || ext == ".GIF") 
      { 
       fupPhoto.PostedFile.SaveAs(path + filename); 
       Bitmap src = Bitmap.FromStream(fupPhoto.PostedFile.InputStream) as Bitmap; 
       Bitmap result = ResizeBitmap(src); 
       SizeMgt(filename); 
       System.Drawing.Bitmap img = new System.Drawing.Bitmap(result, newwid, newhgt); 
       System.Drawing.Imaging.ImageCodecInfo jpegcodec = null; 
       System.Drawing.Imaging.EncoderParameters EncParams; 
       foreach (System.Drawing.Imaging.ImageCodecInfo codec in System.Drawing.Imaging.ImageCodecInfo.GetImageEncoders()) 
       { 
        if (codec.MimeType == "image/jpeg") 
        { 
         jpegcodec = codec; 
         break; 
        } 
       } 

       EncParams = new System.Drawing.Imaging.EncoderParameters(1); 
       EncParams.Param[0] = new System.Drawing.Imaging.EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 20L); 
       newfilename = "new" + filename; 
       img.Save(path + newfilename, jpegcodec, EncParams); 
       img.Dispose(); 

      } 
     } 
     else 
     { 
      newfilename = myphot; 
     } 

       cmd = new SqlCommand("sp_uptreg", conn); 
       cmd.CommandType = CommandType.StoredProcedure; 
       cmd.Parameters.AddWithValue("@tregno", lblregno1.Text); 
       cmd.Parameters.AddWithValue("@catid", ddlCategory.SelectedItem.Value); 

       cmd.Parameters.AddWithValue("@fname", txtfname.Text); 
       cmd.Parameters.AddWithValue("@mname", txtmname.Text); 
       cmd.Parameters.AddWithValue("@lname", txtlname.Text); 

       cmd.Parameters.AddWithValue("@emailid", txtEmail.Text); 
       cmd.Parameters.AddWithValue("@phoneno", txtphone.Text); 
       cmd.Parameters.AddWithValue("@mobileno", txtMobile.Text); 
       cmd.Parameters.AddWithValue("@address", txtAdd.Text); 

       cmd.Parameters.AddWithValue("@photos", newfilename); 


        int a = cmd.ExecuteNonQuery(); 

답변

0

파일이 모두 준비되면이 기능이 실패했다고 생각합니다!

fupPhoto.PostedFile.SaveAs(path + filename); 

그래서 먼저 삭제해야합니다 (있는 경우).

FileInfo (path + filename)를 사용하여 FileExist가 있는지 확인하고 삭제할 수 있습니다.

SaveAs에서 Create Option을 볼 수 있습니다. 따라서 파일이 모두 준비되면 프로 시저가 실패합니다.

public void SaveAs(string filename) 
{ 
    if (!Path.IsPathRooted(filename) && RuntimeConfig.GetConfig().HttpRuntime.RequireRootedSaveAsPath) 
    { 
     throw new HttpException(SR.GetString("SaveAs_requires_rooted_path", new object[] { filename })); 
    } 
    FileStream s = new FileStream(filename, FileMode.Create); 
    try 
    { 
     this._stream.WriteTo(s); 
     s.Flush(); 
    } 
    finally 
    { 
     s.Close(); 
    } 
} 

내가 처리해야 할 객체에 키워드를 사용하여 를 사용하는 것도 좋습니다.

 using (Bitmap src = Bitmap.FromStream(fupPhoto.PostedFile.InputStream) as Bitmap) 
     { 
      //Bitmap result = ResizeBitmap(src); 
      //SizeMgt(filename);     
      using (System.Drawing.Bitmap img = new System.Drawing.Bitmap(result, newwid, newhgt)) 
      { 
       System.Drawing.Imaging.ImageCodecInfo jpegcodec = null; 
       System.Drawing.Imaging.EncoderParameters EncParams; 
       foreach (System.Drawing.Imaging.ImageCodecInfo codec in System.Drawing.Imaging.ImageCodecInfo.GetImageEncoders()) 
       { 
        if (codec.MimeType == "image/jpeg") 
        { 
         jpegcodec = codec; 
         break; 
        } 
       } 

       EncParams = new System.Drawing.Imaging.EncoderParameters(1); 
       EncParams.Param[0] = new System.Drawing.Imaging.EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 20L); 
       newfilename = "new" + filename; 
       img.Save(path + newfilename, jpegcodec, EncParams); 
       img.Dispose(); 
      } 
      src.Dispose(); 
     } 
+0

내가 알려주고 알려 드리겠습니다. 답장을 보내 주셔서 감사합니다 Mr. Aristos –

1

내가 말할 것입니다 (그것이 편집 페이지입니다 코드를 업데이트하고 난 업데이트하고) 그 파일 ISN '를 저장하기위한 코드 보유하고있는 모든 손잡이를 처리하지 않으므로 다시 저장하려고하면 이미 사용 중입니다. 저장 코드를 게시 할 수 있습니까?

+0

Mr. Paddy 방금 내 코드를 붙여 넣으십시오. 답장을 보내 주셔서 감사합니다. –

관련 문제