C # File Upload работает локально;не на Лазурном - PullRequest
0 голосов
/ 07 июня 2018

У меня есть веб-приложение на C #, которое загружает файл изображения в хранилище BLOB-объектов Azure.Я передаю локальный путь к файлу изображения из текстового поля (без контроллера загрузки файлов).Это приложение работает локально, как и ожидалось.Но когда я публикую его в Azure, выдается исключение.

Не удалось найти файл (имя файла)

Какие изменения необходимо внести, чтобы запустить его в Azure?

Код:

CloudBlobContainer container = Program.BlobUtilities.GetBlobClient.GetContainerReference(Container);// container 
            container.CreateIfNotExists();
            container.SetPermissions(new BlobContainerPermissions
            {
                PublicAccess = BlobContainerPublicAccessType.Blob
            });
            CloudBlobDirectory directory = container.GetDirectoryReference(foldername);
            // Get reference to blob (binary content)
            CloudBlockBlob blockBlob_image = directory.GetBlockBlobReference(imageid);
                 using (var filestream = System.IO.File.OpenRead(image_path))
                {
                    blockBlob_image.UploadFromStream(filestream);
                }

Ответы [ 3 ]

0 голосов
/ 07 июня 2018

ок, нашел решение.Вместо того, чтобы передавать путь к файлу в текстовое поле, я использовал FileUpload Controller.В коде позади

Stream image_path = FileUpload1.FileContent;

На самом деле, раньше я тоже пытался использовать контроллер FileUpload, но Server.MapPath(FileUpload1.Filename) и Path.GetFullPath(FileUpload1.FileName) не давали правильный путь.

Также,

           using (var filestream = image_path)
           {
        blockBlob_image.UploadFromStream(image_path);
           }

заменяется на

blockBlob_image.UploadFromStream(image_path);
0 голосов
/ 11 июня 2018

Не удалось найти файл (имя файла)

Исключение вызвано System.IO.File.OpenRead(filePath), поскольку ваше веб-приложение публикуется в Azure.Если вы хотите использовать System.IO.File.OpenRead (filePath), вам необходимо убедиться, что путь к файлу может быть найден в WebApp .

Какие изменения необходимо внести, чтобы запустить его в Azure?

Если вы хотите использовать код в Azure, необходимо убедиться, что файл может бытьнайден на веб-сайте Azue.Вам необходимо скопировать файл в Azure.Если вы хотите загрузить файл в BLOB-объект Azure, он не рекомендуется.После этого вам сначала нужно скопировать файл в Azure WebApp.

Также как вы уже упоминали, вы можете использовать FileUpload Controller для этого.

0 голосов
/ 07 июня 2018

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

string path = HostingEnvironment.ApplicationPhysicalPath + @"\YourProjectName\PathToFile"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...