Obtener ruta completa del archivo de detrás código de entrada de archivo HTML
-
26-09-2019 - |
Pregunta
utiliza Entrada archivo HTML en lugar de Web Control FileUpload . No pregunte por qué, pero tengo que!
HTML:
<input type="file" id="image1" class="listUploadAdd" name="ImageAdd1" />
Código atrás:
Dim ImageAdd1 As String = Request.Form("ImageAdd1").ToString()
he echado un vistazo a "C: /Orange.jpg" para subir y el resultado en el código subyacente es sólo el nombre de la imagen "orange.jpg" y no el pleno "C: /Orange.jpg" que se necesita para obtener la archivo desde una unidad local que va a cargar.
¿Cuál es la mejor manera de capturar la ruta de la imagen completa del código detrás para ser cargado en el servidor?
Gracias.
Solución
¿Se puede añadir un runat="server"
al elemento de entrada? :) Entonces es bastante fácil de almacenar el archivo en el servidor
Request.Files("File1").SaveAs("c:\somedir\yourfile.txt")
Si desea que el nombre de archivo original y la ruta, intente lo siguiente:
Dim filename As string = Request.Files("File1").FileName
Para descargar el archivo sin utilizar un atributo runat="server"
, usted puede hacer esto:
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)
Pero hay que establecer el enctype
en el elemento de formulario en la página HTML:
<form id="yourform" runat="server" enctype="multipart/form-data">
Otros consejos
he echado un vistazo a "C: /Orange.jpg" para subir y el resultado en el código subyacente es sólo el nombre de la imagen "orange.jpg" y no el pleno "C: /Orange.jpg" que se necesita para obtener la archivo desde una unidad local que va a cargar.
Usted no será capaz de sacar el archivo de la máquina del cliente. Cuando estás desarrollando su programa, el cliente y el servidor son la misma máquina, pero cuando se implementa, el servidor y el cliente serán diferentes máquinas. Cuando se ejecuta el código subyacente (en el servidor), si se intenta abra C: \ orange.jpg que será intentar abrirlo fuera del disco duro del servidor. probablemente no existe este archivo.
Cuando se carga un archivo desde una página web, se ha publicado en el servidor como parte del mensaje POST. Puede obtener el archivo de este Formulario de la colección. No es necesario para convertir el cargador al control ASP.NET, o añadir el atributo runat="server"
. En tanto que su puesto el formulario, que contiene el elemento de entrada que se envía al servidor.
El contenido del archivo se almacena como una matriz de bytes en forma. Puede guardar esta matriz de bytes como un archivo en algún lugar del disco duro del servidor.
En resumen:
Usted no necesita saber la ruta al archivo en la máquina del cliente, ya que no se puede acceder a él de todos modos. Utilizar los datos del archivo que se contabiliza como parte del formulario de envío en lugar de guardar una copia del archivo en el servidor.