BG Development


  Reply to this topicStart new topicStart Poll

> Convert jpg to webp - Access to the path is denied
Momchilov
Публикувано на: 03-10-2021, 20:30
Quote Post



Име: Момчилов
Група: Потребител
Ранг: Активен

Мнения: 195
Регистриран на: 22.02.10



Здравейте,

Два дни се блъскам с нещо, в което не виждам никаква логика, историята:

Обръщам всички снимки в сайтовете(.net Core 5) си от .jpg в .webp. Използвам
- ImageProcessor
- ImageProcessor.Plugins.WebP.Imaging.Formats;

На единия сайт, успях без големи проблеми, който от създаването му е .net Core 5.
Другият го мигрирах от .net Core 2.0 в .net Core 5.

Копирал съм кодът от първия на втория едно към едно:

CODE
 
public async Task<string> PicturesWebP(string imageMiddle, int Id)
       {
           DateTime now = DateTime.Now;
           string dateTime = now.ToString("yyyyMMddHHmmss");

           var fileNameMid = Path.Combine(he.WebRootPath, imageMiddle);
           string imageMidWebP = "directory/directory/directory/" + Path.GetFileName(Id + "_Mid_" + dateTime + ".webp");
           var fileNameMidWebp = Path.Combine(he.WebRootPath, imageMidWebP);

           byte[] photoBytes = File.ReadAllBytes(fileNameMid);

           var inStream = new MemoryStream(photoBytes, false);
           try
           {
               using (var webPFileStream = new FileStream(fileNameMidWebp, FileMode.Create))
               {
                   using (ImageFactory imageFactory = new ImageFactory(preserveExifData: true))
                   {
                       imageFactory.Load(inStream)
                                   .Format(new WebPFormat())
                                   .Quality(85)
                                   .Save(webPFileStream);

                       webPFileStream.Close();
                   }
               }
               inStream.Close();
}



В съответната папка създава файл с исканото име и разширение, но не го пълни с оригиналната снимка.

И избива тази грешка:

CODE
System.TypeInitializationException: The type initializer for 'ImageProcessor.Plugins.WebP.Imaging.Formats.NativeMethods' threw an exception.\r\n ---> System.UnauthorizedAccessException: Access to the path 'C:\\Inetpub\\vhosts\\site.com\\httpdocs\\x86' is denied.\r\n   at System.IO.FileSystem.CreateDirectory(String fullPath, Byte[] securityDescriptor)\r\n   at System.IO.DirectoryInfo.Create()\r\n   at ImageProcessor.Configuration.NativeBinaryFactory.<>c__DisplayClass7_0.<RegisterNativeBinary>b__0(String b)\r\n   at System.Collections.Concurrent.ConcurrentDictionary`2.GetOrAdd(TKey key, Func`2 valueFactory)\r\n   at ImageProcessor.Configuration.NativeBinaryFactory.RegisterNativeBinary(String name, Byte[] resourceBytes)\r\n   at ImageProcessor.Plugins.WebP.Imaging.Formats.NativeMethods..cctor()\r\n   --- End of inner exception stack trace ---\r\n   at ImageProcessor.Plugins.WebP.Imaging.Formats.NativeMethods.WebPFree(IntPtr pointer)\r\n   at ImageProcessor.Plugins.WebP.Imaging.Formats.WebPFormat.EncodeLossly(Bitmap bitmap, Int32 quality, Byte[]& webpData)\r\n   at ImageProcessor.Plugins.WebP.Imaging.Formats.WebPFormat.Save(Stream stream, Image image, Int64 bitDepth)\r\n   at ImageProcessor.ImageFactory.Save(Stream stream)\r\n   at ...... .PicturesWebP(String imageMiddle, Int32 Id) in F:\\WORK\\folder\\folder\\folder\\folder\\uploadimage.cs:line 162"



- На localhost работи без проблеми
- На сървъра не работи, промених на всички папки пърмишъните да пише, да трие.
- Всичко от тази грешка четох, да се хвана за някаква сламка какъв може да е проблема
- Ако махна от кода .Format(new WebPFormat()).Quality(85) - Работи
- Пътищата са верни C:\\Inetpub\\vhosts\\site.com\\httpdocs\\wwwroot\\directory/directory/directory/16917_Mid_20211003142157.jpg

Ще съм благодарен за някоя сламка да се хвана, да изследвам, понеже вече тотално забих, не ми о побира главата, 2 сайта, един и същи код, една и съща технология, един и същи хостинг, ред поред гледах кодове. На единия работи, на другия не....

Благодаря за отделеното време!












--------------------
PMEmail Poster
Top
thrawn
Публикувано на: 04-10-2021, 05:24
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 3173
Регистриран на: 17.01.17



Ми то си пише... нямаш достъп до C:\Inetpub\vhosts\site.com\httpdocs\x86
PMEmail Poster
Top
Momchilov
Публикувано на: 04-10-2021, 08:00
Quote Post



Име: Момчилов
Група: Потребител
Ранг: Активен

Мнения: 195
Регистриран на: 22.02.10



QUOTE (thrawn @ 04-10-2021, 05:24)
Ми то си пише... нямаш достъп до C:\Inetpub\vhosts\site.com\httpdocs\x86

Да, въпросът е защо? След като съм разрешил всичко, след като на другия сайт работи, както и защо излиза това \x86 като такава папка не съществува. Хостинга също потвърдиха, че няма допълнителни секюрити рестрикции, както и че не съществува такава папка. Проблемът за сега съм установил, че идва от опита Format на снимката...


--------------------
PMEmail Poster
Top
thrawn
Публикувано на: 04-10-2021, 09:04
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 3173
Регистриран на: 17.01.17



Явно някоя от библиотеките които ползваш я ползва тая директория за нещо, знам ли... Направи я, разреши сървърът да пише в нея и виж какво става.
PMEmail Poster
Top
Momchilov
Публикувано на: 04-10-2021, 09:18
Quote Post



Име: Момчилов
Група: Потребител
Ранг: Активен

Мнения: 195
Регистриран на: 22.02.10



QUOTE (thrawn @ 04-10-2021, 09:04)
Явно някоя от библиотеките които ползваш я ползва тая директория за нещо, знам ли... Направи я, разреши сървърът да пише в нея и виж какво става.

Да................, чак не смея да се зарадвам, проработи!!! Слага в тази папка библиотека libwebp.dll , но защо там. Ха и на другия сайт сам си е създал папката...

Наистина не знам как да ти благодаря, не ми даде сламка, проблема ми реши!!!

Благодаря!


--------------------
PMEmail Poster
Top
1 потребители преглеждат тази тема в момента (1 гости, 0 анонимни потребители)
Потребители, преглеждащи темата в момента:

Topic Options Reply to this topicStart new topicStart Poll

 


Copyright © 2003-2019 | BG Development | All Rights Reserved
RSS 2.0