Отправленные файлы не могут получить имя файла с путем - PullRequest
0 голосов
/ 24 июля 2010

Проблема, с которой я сталкиваюсь, заключается в том, что когда я компилирую и запускаю локально, она работает нормально (то есть, это «file.FileName» дает мне файл с именем файла с путем), но когда я запускаю тот же код с локальным IISэто не работает (то есть это "file.FileName" только дает мне имя файла).Может кто-нибудь, пожалуйста, скажите мне, что происходит.

        foreach (string inputTagName in Request.Files)
        {
            HttpPostedFileBase file = Request.Files[inputTagName];
            //File file; 
            if (file.ContentLength > 0)
            {
                string FilePath = file.FileName;
                ..........
            }
            ........
        }

Ответы [ 2 ]

1 голос
/ 24 июля 2010

MSDN говорит:

При переопределении в производном классе получает полное имя файла на клиенте.

ЕслиВы хотите сохранить файл, следуя инструкциям, может помочь, внутри проверки if.

var filename = Path.Combine(Request.MapPath("~/App_Data"), Path.GetFileName(file.FileName));
file.SaveAs(filename);
0 голосов
/ 24 июля 2010

Когда вы говорите локально, я предполагаю, что вы запускаете приложение напрямую из VS IDE. Вы не упомянули, какую версию VS IDE вы используете, будь то VS 2005/2008/2010. Я также предполагаю, что вы будете использовать одну из этих сред разработки.

В этом случае при локальном запуске VS будет использовать встроенный сервер cassini для доступа к файловой системе. При развертывании сайта он будет использовать IIS. Поскольку сервер cassini работает под тем же именем, что и VS, он может иметь доступ к файлу.

Когда вы пытаетесь сделать то же самое с помощью IIS, он может потерпеть неудачу, потому что работает под учетной записью службы. Вам нужно будет явно дать разрешения на чтение 7 для папки, из которой вы пытаетесь читать или писать на веб-сервере.

Если вы используете сервер Windows 2008, вам необходимо проверить, используется ли учетная запись сети или сетевой службы для запуска процесса IIS. В старых операционных системах это будет учетная запись ASPNET, для которой потребуется разрешение на физическую папку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...