0

データと画像をアップロードしようとすると、少し問題が発生します。

問題は:

System.IO.IOException: The process cannot access the file 'C:\MyWebSites\Class\OriginalImages\IMG_9209.JPG' because it is being used by another process. at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost) at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, String msgPath, Boolean bFromProxy) at System.IO.FileStream..ctor(String path, FileMode mode) at System.Web.HttpPostedFile.SaveAs(String filename) at Admin_InsertStudent.Button1_Click(Object sender, EventArgs e)

C#:

using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.IO; using System.Text;

public partial class Admin_InsertStudent : System.Web.UI.Page {
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        try
        {
        if (FileUpload1.HasFile)
        {
            string tempPath = "OriginalImages";
            string imgPath = "StudentImages";
            string savePath = Path.Combine(Request.PhysicalApplicationPath, tempPath);
            string TempImagePath = Path.Combine(savePath, FileUpload1.FileName);

            string imgSavePath = Path.Combine(Request.PhysicalApplicationPath, imgPath);
            string StudentImageNormal = Path.Combine(imgSavePath, FileUpload1.FileName);
            string StudentImageThumbnail = Path.Combine(imgSavePath, "t__" + FileUpload1.FileName);
            string extension = Path.GetExtension(FileUpload1.FileName);

            switch (extension.ToLower())
            {
                case ".png":
                    goto case "Upload";
                case ".gif":
                    goto case "Upload";
                case ".jpg":
                    goto case "Upload";
                case "jpeg":
                    goto case "Upload";

                case "Upload":
                    FileUpload1.SaveAs(TempImagePath);

                    ImageTools.GenerateTumbnail(TempImagePath,StudentImageNormal, 400, 300, true, "High");

                    ImageTools.GenerateTumbnail(TempImagePath, StudentImageThumbnail, 120, 90, true, "medium");

                    lblMessage.Text = "Billedet" + FileUpload1 + "er nu uploadet";

                    string FirstName = Convert.ToString(txtFirstName.Text);
                    string MiddleName = Convert.ToString(txtMiddelName.Text);
                    string LastName = Convert.ToString(txtLastName.Text);
                    string BirthDay = Convert.ToString(txtBirthDay.Text);
                    string City = Convert.ToString(txtCity.Text);
                    string Pic = "OriginalImages/StudentImages/" + FileUpload1.FileName;
                    string WebSite = Convert.ToString(txtWebSite.Text);

                    break;

                default:
                    lblMessage.Text = "Denne Filetype er ikke tilladt";
                    return;
            }

        }
    }
    catch (Exception err)
    {
        lblMessage.Text = err.ToString();
    }
        } }

誰かが私を助けてくれることを願っています:)

4

1 に答える 1

1

ファイルをアップロードしたら、それを解放する必要があります。

yourFile.Dispose();

MSDN

このメソッドを使用して、このインターフェイスを実装するクラスのインスタンスが保持するファイル、ストリーム、ハンドルなどのアンマネージ リソースを閉じたり解放したりします。このメソッドは、慣例により、オブジェクトが保持するリソースの解放、または再利用のためのオブジェクトの準備に関連するすべてのタスクに使用されます。

于 2012-04-30T11:29:12.257 に答える