2017-12-15 5 views
0

私は画像を変換することでゼロ経験を持っています。私が取り組んでいるWebアプリケーションは画像をアップロードし、jp2画像をjp2画像に変換します。画像を書き込もうとするとエラーが発生します。エラー:許可が拒否され、画像を開くことができません。.net画像をjp2に変換するjp2を使用するmagick.net

  1. エラーを解決するにはどうすればよいですか?
  2. これを行うより良い方法はありますか?

.NETコード:

using System; 
    using System.Web; 
    using System.IO; 
    public class fileUploader : IHttpHandler { 

     public void ProcessRequest(HttpContext context) 
     { 
      context.Response.ContentType = "text/plain"; 
      try 
      { 
       string dirFullPath = HttpContext.Current.Server.MapPath("~/MediaUploader/"); 
       string[] files; 
       int numFiles; 
       files = System.IO.Directory.GetFiles(dirFullPath); 
       numFiles = files.Length; 
       numFiles = numFiles + 1; 
       string str_image = ""; 

       foreach (string s in context.Request.Files) 
       { 
        HttpPostedFile file = context.Request.Files[s]; 
        string fileName = file.FileName; 
        string fileExtension = file.ContentType; 

        if (!string.IsNullOrEmpty(fileName)) 
        { 
         fileExtension = Path.GetExtension(fileName); 
         str_image = "MyPHOTO_" + numFiles.ToString() + fileExtension; 
         string pathToSave_100 = HttpContext.Current.Server.MapPath("~/MediaUploader/") + str_image; 
         file.SaveAs(pathToSave_100); 
using (MagickImage image = new MagickImage(pathToSave_100)) 
{ 
    image.Format = Magick.jp2 
    image.Write(pathToSave_100); //get error here: 
} 
        } 
       } 
       // database record update logic here () 

       context.Response.Write(str_image); 
      } 
      catch (Exception ac) 
      { 

      } 
     } 

     public bool IsReusable { 
      get { 
       return false; 
      } 
     } 

    } 

答えて

0

ウェブサイトは、一般的に自分のアカウントとすべて同じ権限を持っていないだろう、特別なユーザーアカウントで実行されます。この特別なアカウントに~/MediaUploader/パスへの書き込み権限があることを確認してください。

+0

この「特別口座」はどのように識別しますか?あなたが私を指すことができるリソースはありますか? –

0

ウェブサイトをホストする方法と場所によっては、書き込みしようとしているフォルダに書き込む権限がない場合があります。

〜/ App_Data以下のフォルダを使用できるかどうか試してください。従来、ほとんどのケースでは、ASP .NETに書込みアクセスが必要なファイルを格納するために、この場所を使用して、運用システムでデフォルトで書き込むことができます。

+0

プライベートサーバー上で...アプリケーションはWindows 2012サーバーにあります –

+0

次に、使用するフォルダに移動し、IISに書き込み権限を割り当てます – dlxeon

関連する問題