Transmitfile выдает ошибку не удалось найти часть пути 'C:\upload\'
Я хочу редактировать строки представления сетки вместе с опцией загрузки файла. Я могу выполнить редактирование и загрузку файлов отдельно. Но когда я выполняю оба варианта и нажимаю кнопку Edit, это дает мне ошибку:не удалось найти часть пути 'c:\upload". Этот путь является правильным, и загрузка файла может быть выполнена с этого пути.
namespace gerp_support { public partial class Admin : System.Web.UI.Page { string cs = ConfigurationManager.ConnectionStrings["GerpConnStr"].ConnectionString; SqlConnection con; SqlDataAdapter adapt; DataTable dt; protected void Page_Load(object sender, EventArgs e) { if (!this.IsPostBack) { this.ShowData(); } } private void ShowData() { dt = new DataTable(); con = new SqlConnection(cs); con.Open(); adapt = new SqlDataAdapter("SELECT ID,request_no,requestor,request_type, request_area, subject,description,attachment,req_status,admin_comment FROM request where req_status='Open' order by ID", con); adapt.Fill(dt); if (dt.Rows.Count > 0) { GridView1.DataSource = dt; GridView1.DataBind(); } con.Close(); } protected void GridView1_RowEditing(object sender, System.Web.UI.WebControls.GridViewEditEventArgs e) { //NewEditIndex property used to determine the index of the row being edited. GridView1.EditIndex = e.NewEditIndex; ShowData(); } protected void gvFiles_RowCommand(object sender, GridViewCommandEventArgs e) { Response.Clear(); Response.ContentType = "application/octet-stream"; // Response.AppendHeader("Content-Disposition", "filename=" + e.CommandArgument); Response.AppendHeader("Content-Disposition", "attachment; filename=" + e.CommandArgument); string p = @"c:\upload\"; Response.TransmitFile(p + e.CommandArgument); // Response.TransmitFile(@"~\upload\" + e.CommandArgument); Response.End(); } protected void GridView1_RowUpdating(object sender, System.Web.UI.WebControls.GridViewUpdateEventArgs e) { //Finding the controls from Gridview for the row which is going to update Label id = GridView1.Rows[e.RowIndex].FindControl("lbl_id") as Label; Label request_no = GridView1.Rows[e.RowIndex].FindControl("lbl_request_no") as Label; Label requestor = GridView1.Rows[e.RowIndex].FindControl("lbl_requestor") as Label; Label request_type = GridView1.Rows[e.RowIndex].FindControl("lbl_request_type") as Label; Label request_area = GridView1.Rows[e.RowIndex].FindControl("lbl_request_area") as Label; Label subject = GridView1.Rows[e.RowIndex].FindControl("lbl_subject") as Label; Label description = GridView1.Rows[e.RowIndex].FindControl("lbl_description") as Label; TextBox req_status = GridView1.Rows[e.RowIndex].FindControl("txt_req_status") as TextBox; TextBox admin_comment = GridView1.Rows[e.RowIndex].FindControl("txt_admin_comment") as TextBox; con = new SqlConnection(cs); con.Open(); SqlCommand cmd = new SqlCommand("Update request set req_status='" +req_status.Text+ "',admin_comment='" +admin_comment.Text+ "' where ID=" + Convert.ToInt32(id.Text), con); cmd.ExecuteNonQuery(); con.Close(); GridView1.EditIndex = -1; ShowData(); }
Что я уже пробовал:
Я попытался отредактировать строку представления сетки и загрузить файл отдельно, и это сработало. Но когда я выполняю оба и нажимаю кнопку редактирования, это дает ошибку:не удалось найти часть пути 'c:\upload\'
rajib saiful
Привет
Пожалуйста, получите скриншот сообщения об ошибке по ссылке ниже. При нажатии кнопки Edit появляется это сообщение об ошибке. Здесь нет возможности загрузки вложений.
http://stackoverflow.com/questions/38319744/transmitfile-gives-error-could-not-find-a-part-of-the-path-c-upload
BR
Раджиб
Richard Deeming
Ваш код уязвим для SQL-инъекция[^]. НИКОГДА используйте конкатенацию строк для построения SQL-запроса. ВСЕГДА используйте параметризованный запрос.
Все, что вы хотели знать о SQL-инъекции (но боялись спросить) | Трой Хант[^]
Как я могу объяснить SQL-инъекцию без технического жаргона? | Обмен Стеками Информационной Безопасности[^]
Шпаргалка по параметризации запросов / OWASP[^]
Richard Deeming
Когда вы отлаживаете свой код, какова его ценность? e.CommandArgument
?
ZurdoDev
Если путь правильный, то есть этот путь существует везде, откуда выполняется код, то это, скорее всего, проблема с разрешениями.
rajib saiful
Спасибо Вам, Ряндев, за ответ. По этому пути файл загружается, но нажатие кнопки редактирования дает эту ошибку. Что указывает на отсутствие проблемы с разрешением. Пожалуйста, прокомментируйте, если я что-то упустил.
ZurdoDev
Где находится код для загрузки?