Aksh@169 Ответов: 1

Google chrome vs internet explorer: проблема отладки fileupload excel


string path = Server.MapPath(exclupload.PostedFile.FileName);
       string path1 = exclupload.PostedFile.FileName;
       //Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" file location"; Extended Properties=Excel 8.0;IMEX=1;HDR=yes
       //string constr = string.Format(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=""Excel 12.0 Xml;HDR=YES;""", _path);

       string excelConnectionString1 = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties=Excel 8.0;";
       string excelConnectionString2 = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties=Excel 12.0;";

       string ext = System.IO.Path.GetExtension(this.exclupload.PostedFile.FileName);


       if (ext == ".xls" | ext.Equals(".elsx"))//Excel 97-03
           {
           conStr = excelConnectionString1;

           }
       else (ext == ".xlsx")//Excel 07

           {
               conStr = excelConnectionString2;
           }
         
       }



       OleDbConnection excelConnection = new OleDbConnection(conStr);
       OleDbCommand cmd = new OleDbCommand("Select [Comment] from ["+ "Sheet1" +"]", excelConnection);
       OleDbDataAdapter adp = new OleDbDataAdapter("Select [Comment] from ["+ "Sheet1" +"]", excelConnection);
       excelConnection.Open();

       DataSet ds = new DataSet();
       adp.Fill(ds);
       DataTable dt = ds.Tables[0];


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

При отладке приведенного выше кода для загрузки данных excel в datatable я получаю полный путь в Internet explorer.
Когда я пытаюсь отладить тот же код в Google Chrome, я получаю только имя файла, опубликованное и
Как я должен справиться с этой проблемой?
Он выдает ошибку.Кроме того в Chrome он не принимает имя листа

Я пытался
OleDbCommand cmd = new OleDbCommand("Select [Comment] from [Sheet1]", excelConnection);


Также. Пожалуйста, помогите мне.
В случае каких-либо изменений безопасности в браузере Internet Explorer каждый пользователь должен внести изменения в свой Internet Explorer.

1 Ответов

Рейтинг:
9

F-ES Sitecore

string path = Server.MapPath(exclupload.PostedFile.FileName);


Это не сработает. Как вы обнаружили, разные браузеры дают разные значения пути, но даже если это правильный исходный путь к файлу, это путь на клиенте, поэтому делать mappath на сервере бессмысленно.

Вам нужно забыть путь, просто используйте имя файла (path1 в вашем коде выше). Если вы хотите читать из этого файла, вам нужно будет сохранить его где-нибудь на диске сервера и сделать mappath для этого файла. Так, например, вы можете сохранить загруженный файл в

~/App_Data

тогда путь к файлу будет таким

Server.MapPath("~/App_Data/" + path1);


Судя по опубликованному вами коду, вы, похоже, нигде не сохраняете файл, так что это шаг, который вам нужно добавить.