Member 13602958 Ответов: 2

Я хочу загрузить фотографии из кнопки нажмите и сохраните изображение в папке проекта и путь в базе данных


Я уже пробовал это сделать:

private void button6_Click(object sender, EventArgs e)
{
/* // DialogResult result = openFileDialog1.ShowDialog();
if (result == DialogResult.OK)
{
String file = openFileDialog1.FileName;
string[] f = file.Split('\\');
string fn = f[(f.Length) - 1];
string dest = @"C:\Users\admin\source\repos\Software of TE\Software of TE\Images";
File.Copy(file, dest, true);
con = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=D:\DATABASE\data.sql.mdf;Integrated Security=True;Connect Timeout=30");
string q = "Insert into [Tab] values ('" + fn + "','" + dest + "')";
SqlCommand cmda = new SqlCommand(q, con);
con.Open();
cmda.ExecuteNonQuery();
MessageBox.Show("Drawing Save Successfully...!!!");*/
}

Но Это Показывает Ошибку:
System.IO.DirectoryNotFoundException: 'Could not find a part of the path 'C:\Users\admin\source\repos\Software of TE\Software of TE\Images\'.'


Что я уже пробовал:

private void button6_Click(object sender, EventArgs e)
{
/* // DialogResult result = openFileDialog1.ShowDialog();
if (result == DialogResult.OK)
{
String file = openFileDialog1.FileName;
string[] f = file.Split('\\');
string fn = f[(f.Length) - 1];
string dest = @"C:\Users\admin\source\repos\Software of TE\Software of TE\Images";
File.Copy(file, dest, true);
con = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=D:\DATABASE\data.sql.mdf;Integrated Security=True;Connect Timeout=30");
string q = "Insert into [Tab] values ('" + fn + "','" + dest + "')";
SqlCommand cmda = new SqlCommand(q, con);
con.Open();
cmda.ExecuteNonQuery();
MessageBox.Show("Drawing Save Successfully...!!!");*/
}

Но Это Показывает Ошибку:
System.IO.DirectoryNotFoundException: 'Could not find a part of the path 'C:\Users\admin\source\repos\Software of TE\Software of TE\Images\'.'

2 Ответов

Рейтинг:
2

Wendelius

Сообщение об ошибке совершенно ясно, каталог не может быть найден.

Вы уверены, что, например, папка "программное обеспечение TE" не является дважды ненужной?

Также убедитесь, что пользователь, запустивший приложение, имеет доступ к нужной папке.


Рейтинг:
10

OriginalGriff

Сообщение об ошибке довольно ясно:

Could not find a part of the path 'C:\Users\admin\source\repos\Software of TE\Software of TE\Images\'

Проверьте жесткий диск компьютера, на котором выполняется этот код, и проверьте путь.

Но... две другие вещи:
1) "загрузить" в вашей теме письма беспокоит меня. Если это веб - сайт - и "загрузка" подразумевает это, - вы понимаете, что код C# работает на сервере, а не на клиенте и не имеет никакого доступа к клиентской файловой системе? И все диалоги будут открываться на сервере, а не на клиенте? Эти вещи, по-видимому, работают в разработке, потому что сервер и клиент-это один и тот же компьютер, но в производстве они не работают...

2) Не делайте таких баз данных! Никогда не объединяйте строки для построения команды SQL. Это оставляет вас широко открытыми для случайной или преднамеренной атаки SQL-инъекции, которая может уничтожить всю вашу базу данных. Вместо этого используйте параметризованные запросы.

Когда вы объединяете строки, вы вызываете проблемы, потому что SQL получает такие команды, как:
SELECT * FROM MyTable WHERE StreetAddress = 'Baker's Wood'
Цитата, добавленная пользователем, завершает строку в том, что касается SQL, и вы получаете проблемы. Но могло быть и хуже. Если я приду и наберу вместо этого: "x';DROP TABLE MyTable;--", то SQL получит совсем другую команду:
SELECT * FROM MyTable WHERE StreetAddress = 'x';DROP TABLE MyTable;--'
Которые SQL видит как три отдельные команды:
SELECT * FROM MyTable WHERE StreetAddress = 'x';
Совершенно правильный выбор
DROP TABLE MyTable;
Вполне допустимая команда "удалить таблицу"
--'
А все остальное-это комментарии.
Так оно и происходит: выбирает любые совпадающие строки, удаляет таблицу из базы данных и игнорирует все остальное.

Поэтому всегда используйте параметризованные запросы! Или будьте готовы часто восстанавливать свою БД из резервной копии. Вы ведь регулярно делаете резервные копии, не так ли?


Цитата:
Нет , я не знаю, не могли бы вы привести мне пример параметризованных запросов?
using (SqlConnection con = new SqlConnection(strConnect))
    {
    con.Open();
    using (SqlCommand cmd = new SqlCommand("INSERT INTO myTable (myColumn1, myColumn2) VALUES (@C1, @C2)", con))
        {
        cmd.Parameters.AddWithValue("@C1", myValueForColumn1);
        cmd.Parameters.AddWithValue("@C2", myValueForColumn2);
        cmd.ExecuteNonQuery();
        }
    }
И если под "Нет, я не делаю" вы подразумеваете "Нет, я не делаю регулярных резервных копий", то начните. Сегодня.
Получите некоторое программное обеспечение для резервного копирования: стандарт AOMEI Backupper чертовски хорош и бесплатен (так хорошо, я заплатил им деньги за Pro-версию и никогда не использовал дополнительные функции!).
Получите жесткий диск USB (3.0 - это хорошо, 2.0-нормально) и сделайте резервную копию образа вашего жесткого диска(ов). Это займет несколько часов, если вы проверите резервную копию (что стоит сделать), а затем отключите USB-накопитель. Теперь ты в безопасности, на некоторое время. Ваш жесткий диск может выйти из строя, вы можете получить вымогателей, ваши пользователи могут удалить ваши таблицы - но вы можете вернуться и работать в очень короткое время!

Просто помните: резервная копия, в которой вы больше всего нуждались, была той, которую вы не сделали!
Все жесткие диски терпят неудачу, это просто случай, когда. Файлы удаляются случайно, по ошибке или намеренно. Хорошая надежная процедура резервного копирования-это лучший друг, которого вы можете иметь (и который, как вы можете надеяться, никогда не понадобится).


Member 13602958

Нет , я не знаю, не могли бы вы привести мне пример параметризованных запросов?