Загрузка фото на сайт через SetFileForUpload

Nelirr

Пользователь
Регистрация
23.03.2021
Сообщения
86
Благодарностей
7
Баллы
8
Всем привет
не могу понять почему не грузится фото на сайт
Смысл кода такой: берется название товара, сравнивается с названием картинки, что есть в папке, затем если название совпадает - берется файл, который соответствуют этому названию и устанавливается, как файл для загрузки. Написал такой код, но похоже где-то ошибся. Можете проверить?
C#:
string Name = project.Variables["Name"].Value;
            
            //Сначала берем текущее название товара
            string FinalTranslit = Transliteration.Transliteration.Front(project.Variables["Name"].Value);
            project.SendInfoToLog("Фраза после транслита, шаг 1 - " + FinalTranslit,true);
            
            project.Variables["FinalTranslit2"].Value = FinalTranslit.Replace(@" ", @"_").Trim().ToLower();
            
            project.SendInfoToLog("Фраза после транслита, шаг 2 - " + project.Variables["FinalTranslit2"].Value,true);
            
            instance.WaitForUserAction(50);
            
            //Ищем в папке такое же название картинки. Если нашли, грузим
            string path = Path.Combine(project.Directory, "SystemShab", "Pic");
            
            var dir = new DirectoryInfo(path);
            
            var files = new List<string>();
            foreach(FileInfo file in dir.GetFiles("*.png")){
                files.Add(Path.GetFileNameWithoutExtension(file.FullName));
            }
            
            //Проверяем список полученных файлов на наличие нужного названия
            for(int i=0;i<files.Count;i++){
                
                string LonePicName = files[0].Trim().ToLower();
                project.SendInfoToLog("Имя файла - " + LonePicName, true);
                
                    if(LonePicName.Contains(project.Variables["FinalTranslit2"].Value)){
                        string FilePath = Path.GetFullPath(path + LonePicName + ".png");
                        project.SendInfoToLog("Проверяем путь - " + path + LonePicName + ".png",true);
                        
                        instance.SetFileUploadPolicy("ok", "");
                        instance.SetFilesForUpload(FilePath);
                        project.SendInfoToLog("Установлено фото для загрузки - " + FilePath,true);
                        break;
                    }
                
                files.RemoveAt(0);
                files.Add(LonePicName);
            }
            
            //Удаляем файл с раширением .download
            string extension = "*.download";
            
            foreach(var item in System.IO.Directory.GetFiles(path)){
                System.IO.FileInfo file = new System.IO.FileInfo(item);
                if (System.IO.Path.GetExtension(item) == extension){
                    try{
                        file.Delete();
                    }
                    catch(Exception){}
                }
            }
 

volody00

Client
Регистрация
06.09.2016
Сообщения
796
Благодарностей
816
Баллы
93
на кнопку загрузки то нажимаешь после всех манипуляций? Вообще проверить просто:
- помести в переменную путь к фото для загрузки
- попробуй загрузить на сайт. если загрузится, то причину надо искать в своем коде, а если нет, то значит не срабатывает метод
SetFilesForUpload. Можешь попробовать тогда - https://help.zennolab.com/en/v7/zennoposter/7.1.4/webframe.html#topic134.html
 
  • Спасибо
Реакции: Nelirr

Nelirr

Пользователь
Регистрация
23.03.2021
Сообщения
86
Благодарностей
7
Баллы
8
на кнопку загрузки то нажимаешь после всех манипуляций? Вообще проверить просто:
- помести в переменную путь к фото для загрузки
- попробуй загрузить на сайт. если загрузится, то причину надо искать в своем коде, а если нет, то значит не срабатывает метод
SetFilesForUpload. Можешь попробовать тогда - https://help.zennolab.com/en/v7/zennoposter/7.1.4/webframe.html#topic134.html
да жму)
кстати, да - вариант. Спасибо
 

Nelirr

Пользователь
Регистрация
23.03.2021
Сообщения
86
Благодарностей
7
Баллы
8
на кнопку загрузки то нажимаешь после всех манипуляций? Вообще проверить просто:
- помести в переменную путь к фото для загрузки
- попробуй загрузить на сайт. если загрузится, то причину надо искать в своем коде, а если нет, то значит не срабатывает метод
SetFilesForUpload. Можешь попробовать тогда - https://help.zennolab.com/en/v7/zennoposter/7.1.4/webframe.html#topic134.html
Вопрос в тему:
C#:
for(int b=0;b<files.Count;b++){
            
                if(files.Contains(project.Variables["FinalTranslit4"].Value)){                   
                    string FilePath = Path.GetFullPath(path + LonePicName2 + ".png");
                    project.SendInfoToLog("Путь - " + path + LonePicName2 + ".png",true);
                    
                    instance.SetFileUploadPolicy("ok", "");
                    instance.SetFilesForUpload(FilePath);
                    project.SendInfoToLog("Фото для загрузки - " + FilePath,true);
                    break;
                }           
            }
Этим кусочком кода проверяю вхождение нужного файла во внутреннем списке с файлами - files. В нем содержатся имена файлов, вида:
uzkij_pchak_srednij_garda_olovo_rukojat_ebonit_s_kamnjami_klinok_shkh15_19_sm_obshchaja_dlinna_30_sm
uzbekskij_pchak_garda_gravirovka_kost_uzornaja_shkh_15_15_17_sm_art_43

В FinalTranslit4 - лежит имя вида: afganskij_kazan-skorovarka_30_litrov_chernjj_aljuminij_rashko_baba

Так как я написал код - будет работать?
 

Nelirr

Пользователь
Регистрация
23.03.2021
Сообщения
86
Благодарностей
7
Баллы
8
Сам спросил - сам дал ответ)) Так работает, если сделать имена абсолютно идентичными))
Выскочил другой вопрос - после нажатия на кнопку "загрузить фото" на самом сайте вылетает ошибка загрузки(
С чем может быть связан вопрос? ситуация на скрине
 

Вложения

volody00

Client
Регистрация
06.09.2016
Сообщения
796
Благодарностей
816
Баллы
93
руками попробуй загрузить свою фотку будет ли она грузиться вообще
 
  • Спасибо
Реакции: Nelirr

Nelirr

Пользователь
Регистрация
23.03.2021
Сообщения
86
Благодарностей
7
Баллы
8
руками попробуй загрузить свою фотку будет ли она грузиться вообще
Привет. Попробовал разные способы. Грузится через раз причем.
Таким способом грузится всегда:
C#:
Tab tab = instance.ActiveTab;
Random rnd = new Random();

string Name = "uzbekskiy_chugunnyy_kazan_krugloe_dno_80_l.png";
string path = Path.Combine(project.Directory, "SystemShab", "Pic", Name);

project.SendInfoToLog("Путь - " + path,true);

instance.SetFileUploadPolicy("ok","");
instance.SetFilesForUpload(path);

HtmlElement PhotoLoad = tab.FindElementByXPath("//div[contains(@class, 'btn-wrapper')]/a//following-sibling::input[contains(@type, 'file')]",0);
PhotoLoad.Click();
instance.ActiveTab.WaitDownloading();
System.Threading.Thread.Sleep(rnd.Next(2500, 3500));
а если делать так:
C#:
if(files.Contains(project.Variables["FinalTranslit5"].Value)){                  
                    string FilePath = Path.Combine(path, LonePicName2 + ".png");
                    project.SendInfoToLog("Путь для загрузки фото - " + path + LonePicName2 + ".png",true);
                   
                    instance.WaitForUserAction(50);
                   
                    instance.SetFileUploadPolicy("ok", "");
                    instance.SetFilesForUpload(FilePath);

не могу понять в чем разница...
                    project.SendInfoToLog("Фото для загрузки - " + FilePath,true);
                    break;
                }
то выдает ошибку.

Вообще, как правильно работает метод SetFilesForUpload? Есть какой-либо еще способ загрузить фото на сайт через c#?

так?
instance.SetFileUploadPolicy("ok", "");
instance.SetFilesForUpload(FilePath);
 

lastdrgn

Новичок
Регистрация
30.04.2021
Сообщения
1
Благодарностей
0
Баллы
1
Рекомендую вам посетить сайт kstu.kz
 

Nelirr

Пользователь
Регистрация
23.03.2021
Сообщения
86
Благодарностей
7
Баллы
8

volody00

Client
Регистрация
06.09.2016
Сообщения
796
Благодарностей
816
Баллы
93
возможно просто часть фото не подходит для загрузки на сервер. скидывай шаблон, если хочешь (вместе с картинками), посмотрю
 

Nelirr

Пользователь
Регистрация
23.03.2021
Сообщения
86
Благодарностей
7
Баллы
8
возможно просто часть фото не подходит для загрузки на сервер. скидывай шаблон, если хочешь (вместе с картинками), посмотрю
Напишите в личку свой контакт, лучше почту. Я не могу в личку написать
"не подходит"? формат картинки, размер те не подходит? что-то в таком духе??)
 

volody00

Client
Регистрация
06.09.2016
Сообщения
796
Благодарностей
816
Баллы
93

Nelirr

Пользователь
Регистрация
23.03.2021
Сообщения
86
Благодарностей
7
Баллы
8
Интересный момент - как вообще оптимальнее решить подобную задачу?
Может быть добавить все символы для замены в массив? потом там заменять, как-то так?
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)