Я изо всех сил стараюсь понять это, и вам необходимо посоветовать лучшие практики в отношении приложений MVC, которые читают файл клиента на компьютере пользователя. Моему приложению необходимо загрузить файл Excel на веб-сервер, а затем выполнить некоторую проверку в этом файле, я изо всех сил стараюсь, чтобы это работало, я знаю, что его риск для безопасности для чтения файлов с компьютеров пользователей, но как еще я могу это сделать задача, так как пользователям необходимо загрузить файл, чтобы приложение могло его обработать. Я попытался сохранить файл на сервере, но я получаю бесчисленное исключение, что либо файл, либо часть файла не может быть найден, либо пользователь файла не может получить доступ к файлу в IE и Chrome, я протестировал его на своей локальной машине и все, кажется, работает нормально, моя единственная проблема возникает, когда я развертываю ее на сервере. Я попытался запустить приложение под конкретным пользователем и предоставить этому пользователю доступ к папке приложения, где я сохраняю файл на веб-сервере, но все равно не работает, я попытался с помощью ApplicationPoolIdentity, но не подошел. Каков наилучший способ и рекомендуемый способ выполнения такой задачи в приложении MVC, размещенном в IIS8 на Windows Server 2012 R2. Ниже приведены методы, которые я пытался сохранить файл, но они не работают, как только они были развернуты.MVC-приложение, которое загружает файл пользователя на сервер
Метод 1 - Здесь я попытался с помощью Server.Map
public ActionResult Upload(HttpPostedFileBase file)
{
List<CleanSupplierClaim> supplierClaimsData = new List<CleanSupplierClaim>();
try
{
if (file.ContentLength > 0)
{
var fileName = Path.GetFileName(file.FileName);
var targetPath = Server.MapPath(@"~/upload");
file.SaveAs(Path.Combine(targetPath, fileName));
Метод 2 - Здесь я попытался сохранения в каталог приложений, где его размещенную.
List<CleanSupplierClaim> supplierClaimsData = new List<CleanSupplierClaim>();
try
{
if (file.ContentLength > 0)
{
var fileName = Path.GetFileName(file.FileName);
var targetPath = @"\\servername\C$\inetpub\wwwroot\GpVisibilityUploadQA\upload\" + fileName;
file.SaveAs(targetPath);
Каков наилучший способ для этого. Я действительно застрял. Пожалуйста помоги.
Пожалуйста, разместите сообщение об ошибке, отправленное на сервер. – Win
@Win Не удалось найти файл 'C: \ Users \ myname \ Documents \ Test_GP_Upload.xlsx'. Это в IE и не удалось найти файл 'c: \ windows \ system32 \ inetsrv \ GPUpload.xlsx'. это в Chrome. Любая идея, что здесь происходит, я определил loaction в моем приложении как var targetPath = Server.MapPath (@ "~/upload"); – Papi