Получение полного пути к файлу из кода после ввода HTML файла - PullRequest
1 голос
/ 19 ноября 2010

Я использовал ввод HTML файла вместо FileUpload Web Control .Не спрашивай почему, но я просто должен!

HTML:

<input type="file" id="image1" class="listUploadAdd" name="ImageAdd1" />

Код позади:

Dim ImageAdd1 As String = Request.Form("ImageAdd1").ToString()

Я просматривал из «C: /Orange.jpg» для загрузки, и результатом в Code Behind является просто имя изображения «Orange.jpg», а не полное «C: /Orange.jpg», которое необходимо для получения файлас локального диска для загрузки.

Каков наилучший способ получения полного пути к изображению из кода для загрузки на сервер?

Спасибо.

Ответы [ 2 ]

2 голосов
/ 19 ноября 2010

Можете ли вы добавить runat="server" к элементу ввода? :) Тогда довольно легко сохранить файл на вашем сервере

Request.Files("File1").SaveAs("c:\somedir\yourfile.txt")

Если вы хотите оригинальное имя файла и путь, попробуйте это:

Dim filename As string = Request.Files("File1").FileName

Чтобы загрузить файл без использования атрибута runat="server", вы можете сделать это:

Dim file = Request.Files("File1")
Dim buf(file.ContentLength) As Byte
file.InputStream.Read(buf, 0, file.ContentLength)
IO.File.WriteAllBytes("C:\somedir\yourfile.txt", buf)

Но вы должны установить enctype для элемента формы на html-странице:

<form id="yourform" runat="server" enctype="multipart/form-data">
1 голос
/ 19 ноября 2010

Я просматривал из "C: /Orange.jpg" для загрузки, и результатом в Code Behind является просто имя изображения "Orange.jpg", а не полное "C: /Orange.jpg", которое необходимо для получения файл с локального диска для загрузки.

Вы не сможете извлечь файл с компьютера клиента. Когда вы разрабатываете свою программу, клиент и сервер - это одна и та же машина, но при ее развертывании сервер и клиент будут разными машинами. Когда код позади выполняется (на сервере), если вы пытаетесь открыть C: \ Orange.jpg, вы пытаетесь открыть его с жесткого диска сервера. Этот файл, вероятно, не будет существовать.

Когда вы загружаете файл с веб-страницы, он будет опубликован на сервере как часть сообщения POST. Вы можете получить этот файл из коллекции Form. Вам не нужно преобразовывать загрузчик в элемент управления ASP.NET или добавлять атрибут runat="server". До тех пор, пока вы разместите форму, которая содержит элемент ввода, она будет отправлена ​​на сервер.

Содержимое файла будет сохранено в виде байтового массива в форме. Вы можете сохранить этот байтовый массив как файл где-нибудь на жестком диске сервера.

В итоге:

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

...