0

午後、asp.net FileUpload コントロールを使用してファイルをアップロードしようとしています。画像を保存する前に、ユーザーの GUID を使用してファイルの名前を変更し、画像のサイズを 128px に変更する必要があります。

ただし、保存しようとするとエラーが発生します GDI +で一般的なエラーが発生しました。そして、これをソートする方法がわかりません。

誰かが私のコードを見て、いくつかのガイダンスを提供してください

protected void btnUpload_Click(object sender, EventArgs e)
    {
        Guid userGuid = (Guid)Membership.GetUser().ProviderUserKey; 

        string directory = Server.MapPath("imgs/users");
        string fileExt = Path.GetExtension(fuSample.PostedFile.FileName);
        string fileName = userGuid + fileExt;

        //Check File ext, make sure its an image!
        if (fileExt == ".jpeg" || fileExt == ".jpg" || fileExt == ".png" || fileExt == ".gif")
        {
            //Now we check to make sure its less than 600kb
            if (fuSample.PostedFile.ContentLength < 614400)
            {
                //Delete an existing file.
                if (File.Exists(directory + fileName))
                    File.Delete(directory + fileName);

                // Create a bitmap of the content of the fileUpload control in memory
                Bitmap originalBMP = new Bitmap(fuSample.FileContent);

                // Calculate the new image dimensions
                int origWidth = originalBMP.Width;
                int origHeight = originalBMP.Height;
                int sngRatio = origWidth / origHeight;
                int newWidth = 128;
                int newHeight = newWidth / sngRatio;

                // Create a new bitmap which will hold the previous resized bitmap
                Bitmap newBMP = new Bitmap(originalBMP, newWidth, newHeight);
                // Create a graphic based on the new bitmap
                Graphics oGraphics = Graphics.FromImage(newBMP);

                // Set the properties for the new graphic file
                oGraphics.SmoothingMode = SmoothingMode.AntiAlias; oGraphics.InterpolationMode = InterpolationMode.HighQualityBicubic;
                // Draw the new graphic based on the resized bitmap
                oGraphics.DrawImage(originalBMP, 0, 0, newWidth, newHeight);

                // Save the new graphic file to the server
                newBMP.Save(directory + fileName);

                // Once finished with the bitmap objects, we deallocate them.
                originalBMP.Dispose();
                newBMP.Dispose();
                oGraphics.Dispose();


                //Success! 

            }
            else
            {
                //error here, img too big
            }
        }
        else
        {
            notifybar.Attributes.Add("style", "display:block;");
            notifybar.Attributes.Add("class", "failed");
            notifyText.Text = "Valid Image files only please! (.png, .jpg, .jpeg, or .gif)";
        }
    }
4

1 に答える 1