Red de conocimiento informático - Consumibles informáticos - Puntuación alta para el código de archivo de carga ASP

Puntuación alta para el código de archivo de carga ASP

Sin más preámbulos, subí el código fuente a Internet. Puede abrir el archivo cargado para ver si tiene el efecto que desea. /view.asp es una página de visualización de archivos. He empaquetado y subido el código fuente. El número es 16. Simplemente haga clic en "Abrir" para descargar.

Suplemento: el primer envío es enviar el archivo cargado. En este momento, el archivo se cargará correctamente y se escribirán la ruta y el nombre del archivo.

El segundo envío es. para enviar el formulario index.asp, es decir, el formulario que desea enviar a la base de datos. En resumen, tan pronto como complete el código, esta confirmación guardará el nombre del archivo en la base de datos. Después de guardarlo en la base de datos, puede llamar a <% = RS("content")>, el contenido es el nombre del campo de almacenamiento de su base de datos. del nombre y ruta del archivo de carga! Intentar otra vez. No te enviaré el código fuente completo. Si desea cargarlo y enviarlo a la base de datos al mismo tiempo, puede utilizar el formulario oculto en la página upload.asp.

Además, el primer campo de texto es otro campo que subí a la base de datos cuando estaba probando, así que no tengo que preocuparme por eso. La parte clave está en el segundo campo de texto, que se utiliza para obtener el nombre del encabezado y la ruta de la carga.

********************************************* ***** **********************

Oye, es todo mentira. Una vez que el cartel lo ve claramente, debe mostrar el nombre del archivo cargado y escribirlo en la base de datos. ningún problema. Mira el mío :( Hay cuatro archivos ASP. No copie el código en una sola página.

¡Agregue cualquier pregunta! Si no, hágamelo saber y empaquetaré el código fuente y se lo enviaré. )

Programa de carga principal UpLoadClass.asp, el código es el siguiente:

& lt%

Clase de carga de clase

Privado p_MaxSize , p_TotalSize, p_FileType, p_SavePath, p_AutoSave, p_Error

Formulario de objeto privado, binForm, binItem, strDate, lngTime

Elemento de formulario público, elemento de archivo

Propiedades públicas obtener versión

Versión = "Rumor UpLoadClass versión"

Propiedad final

Propiedad pública obtener error

Error = p_error

Propiedad final

Propiedad pública Obtener MaxSize

MaxSize=p_MaxSize

Propiedad final

Propiedad pública Let MaxSize(lngSize)

p>

Si esNumeric(lngSize) entonces

p_MaxSize=clng(lngSize)

Si... terminará

Atributo final

Total de propiedad pública

TotalSize=p_TotalSize

Propiedad final

Propiedad pública Let TotalSize(lngSize)

Si esNumeric(lngSize) Entonces

p_TotalSize=clng(lngSize)

Si... terminará

Atributo final

Público atributo para obtener el tipo de archivo

FileType = p_FileType

Atributo final

Atributo público Permitir tipo de archivo (strType)

p_FileType=strType

Propiedad final

Propiedad pública Obtener ruta para guardar

Ruta para guardar = p_save path

Propiedad final

Pública propiedad Let save Path (strPath)

p_SavePath=replace(strPath, chr(0), "")

Atributos finales

Los atributos públicos se guardan automáticamente

AutoSave = p_autosave

Propiedad final

Propiedad pública Let AutoSave(byVal flag)

Seleccione case flag

Caso 0:

Caso 1:

Caso 2:

caso falso:Flag=2

Otros casos: flag=0

Finalizar selección

p_AutoSave=flag

Atributo final

Subclase privada_Initialize

p_Error = -1

p_MaxSize = 153600

p_FileType = "jpg/gif "

p_SavePath = " "

p_AutoSave = 0

p_TotalSize = 0

strDate = reemplazar(cstr(Fecha()), "-", "")

lngTime = clng(timer()* 1000)

Establecer binForm = Servidor. CreateObject("ADODB.Stream")

Establecer binItem = Servidor. CreateObject("ADODB.Stream")

Establecer objForm = Servidor. CrearObjeto("Script.

Diccionario")

objForm. CompareMode = 1

Terminator

Subclass_terminate privada

objForm. Eliminar todo

Establecer objForm = nada

Establecer binItem = nada

si p_Error & lt& gt4 entonces binForm. close()

Establecer binForm = nada

Conector final

Sub abierto público()

Si p_Error=-1, entonces

p_Error=0

Otro

Conector de salida

Terminará si...

Atenuar lngRequestSize, binRequestData , strFormItem, strFileItem

const strSplit = " " " " & gt "

lngRequestSize=Request.Número total de bytes

Si lngRequestSize & lt1 o ( lngRequestSize & gtp_TotalSize y p_TotalSize & lt& gt0) entonces

p_Error=4

encabezado de salida

finalizará si...

binRequestData =Solicitud.BinaryRead(lngRequestSize)

binForm.

binRequestData

Dim bCrLf, strSeparator, intSeparator

bCrLf=ChrB(13). )ChrB(10)

intSeparator=InstrB(1, binRequestData, bCrLf)-1

separador de cadena = LeftB(binRequestData, intSeparator)

Dim p_start, p_end, strItem, strInam, intTemp, strTemp

Dim strFtyp, strFnam, strFext, lngFsiz

p_start=intSeparator +2

Do

p_end =InStrB(p_start, binRequestData, bCrLf & ampbCrLf)+3

binType=1

binItem.open

binForm position=p_start

binForm.p_end-p_start

binItem. posición=0

binItem. tipo=2

binItem. Charset="gb2312 "

strItem=binItem. Leer texto

binItem. close()

p_start = p_end

p_end =InStrB(p_start, binRequestData, strSeparator)-1

binItem. Tipo=1

binItem. Abra

binForm. position=p_start

lngFsiz=p_end-p_start-2

binForm.

Copiar a binItem, lngFsiz

intTemp=Instr(39, strItem, """")

strInam=Mid(strItem, 39, intTemp-39)

si Instr(intTemp, strItem, " filename = " ")<> entonces 0

si no es objForm.exists(strInam &" _From ") entonces

strFileItem = strFileItem & ampstrSplit & ampstrinan

if binItem.size<>then0

intTemp=intTemp+13

strFtyp=Mid(strItem, Instr(intTemp, strItem, " Tipo de contenido: ")+14)

strTemp=Mid(strItem, intTemp, Instr(intTemp, strItem, " " " "-intTemp)

intTemp=InstrRev(strTemp, " \ ")

strFnam=Mid(strTemp, intTemp+1)

objForm. " _Type ", strFtyp

objForm. , left(strTemp, intTemp)

objForm , lngFsiz

if Instr(intTemp, strTemp, " ")& lt& gtthen 0

. strFext=Mid(strTemp, InstrRev(strTemp, " ")+1 )

Otros

strFext = " "

Terminará si...

Si left(strFtyp, 6)="image/ "Entonces

binItem.Position=0

binItem.Type=1

strTemp=binItem.read(10)

if strcomp (strTemp,chrb(255)&bsi(216)chrb(255)&chrb(224)&chrb(0)&chrb(16)&ampchrb( 74)&chrb(70)&chrb(73 ) y ampchrb(70), 0)=0 entonces

si Lcase(str text)<& gt" jpg "entonces strFext = " jpg "

binItem. Posición=3

No lo hagas. Diosa del Amanecer

Hacer

intTemp = ascb(binItem.Read(1))

Bucle cuando intTemp = 255 y no es un binItem. Diosa del Amanecer

Si intTemp & lt192 o intTemp & gt entonces 195

binItem.read(Bin2Val(binItem. Cambie (2) a (2)

Otro

Salir do

Terminará si...

Do

intTemp = ascb(binItem.Read(1))

intTemp & lt255 en lugar de binItem

Anillo

binItem.

Leer(3)

objForm. Añade una cadena. " _Height ", Bin2Val(binItem.Read(2))

objForm. Añade una cadena. " _Width ", Bin2Val(binItem.read(2))

elseif strcomp(leftB(strTemp, 8), chrb(137) y ampchrb(80) y ampchrb(78) y ampchrb(71) y ampchrb(13) y ampchrb(10)chrb(26) y ampchrb(10), 0)=0 entonces

si Lcase(str text)<>" png "entonces strFext = " png "

binItem. posición=18

objForm. Añade una cadena. " _Width ", Bin2Val(binItem. read(2))

binItem. Leer(2)

objForm. Añade una cadena. "_Height", Bin2Val(binItem.read(2))

elseif strcomp(leftB(strTemp, 6), chrb(71)&chrb(73)&chrb(70)&chrb(56) y ampchrb (57) y ampchrb(97), 0)=0 o strcomp(leftB(strTemp, 6), chrb(71)&chrb(73) y ampchrb(70) y ampchrb(56) y ampchrb( 55) y ampchrb (97), 0)=0 entonces

if Lcase(str text)<>" gif "entonces strFext = " gif "

binItem. posición=6

objForm. Añade una cadena. " _Width ", BinVal2(binItem.Read(2))

objForm. Añade una cadena. " _Height ", BinVal2(binItem.read(2))

elseif strcomp(leftB(strTemp, 2), chrb(66) y ampchrb(77), 0) = 0 entonces

if Lcase(str text)<>" bmp "Entonces strFext = " bmp "

binItem. posición=18

objForm. Añade una cadena. " _Width ", BinVal2(binItem.Read(4))

objForm. Añade una cadena. " _Height ", BinVal2(binItem.Read(4))

Terminará si...

Terminará si...

objForm. Añade una cadena. " _Ext ", strFext

objForm. Añade una cadena. " _From ", p_start

intTemp=GetFerr(lngFsiz, strFext)

si p_AutoSave & lt& gt2 entonces

objForm. Añade una cadena. " _Err ", intTemp

Si intTemp=0, entonces

Si p_AutoSave=0, entonces

strFnam=GetTimeStr()

if strFext & lt& gt""Entonces strFnam = strFnam & amp"."& ampstrFext

Si... terminará

binItem.

Servidor SaveToFile. MapPath(p_SavePath & strFnam), 2

objForm. Agregue strInam, strFnam

Fin si...

Fin si...

Otro

objForm. Añade una cadena. " _Err ", -1

Terminará si...

Terminará si...

Otro

binItem. posición=0

binItem. tipo=2

binItem. Charset="gb2312 "

strTemp=binItem. Leer texto

si objForm. existe(strInam)

obj form(strInam) = obj form(strInam)&","&strTemp

Otro

strFormItem = strFormItem &strSplit &Strinan

objForm. Añadir cadena

Finalizar si...

Finalizar si...

binItem. close()

p_start = p_end+intSeparator+2

Ciclo hasta p_start+3>lngRequestSize

FormItem=split(strFormItem, strSplit)

FileItem=split(strFileItem, strSplit)

Conector final

Función privada GetTimeStr()

lngTime=lngTime+1

p>

GetTimeStr = strDate & amp time

Función final

Función privada GetFerr(lngFsiz, strFext)

dim intFerr

intFerr =0

Si lngFsiz & gtp_MaxSize y p_MaxSize & gt entonces 0

Si p_Error=0 o p_Error=2, entonces p_Error=p_Error+1

intFerr= intFerr+1

Terminará si...

if Instr(1, LCase("/" &Tipo de archivo&"/",LCase(" /" & strFext & "/") = 0 y p_FileType & lt& gt"" entonces

si p_Error & lt2 entonces p_Error=p_Error+2

intFerr=intFerr+2

Terminará si...

GetFerr=intFerr

Función final

Función pública Guardar(Item, strFnam )

save = false

si objForm existe (item&" _From ") entonces

dim intFerr, strFext

str text = obj form(Item & " _Ext ")

int ferr = get ferr(obj form(Item & "_Size"), strFext)

if objForm.

existe(item&"_Err") entonces

si intFerr=0, entonces

obj form(item&"_Err")=0

Terminará si...

Otro

objForm. Añade elementos. " _Err ", intFerr

Fin si...

Si intFerr & lt& gt0 entonces sale de la función

Si VarType(strFnam)=2, entonces p>

Seleccione el caso strFnam

Caso 0: strFnam=GetTimeStr()

if strFext & lt& gt""Entonces strFnam = strFnam & amp"."& ampstrFext

Caso 1: strFnam = obj form(Item & " _Name ")

Finalizar selección

Terminará si...

binArtículo. Tipo = 1

binItem. Abra

binForm. posición = obj form(Item & " _From ")

binForm. Copiar a binItem, formulario obj(Artículo y " _Tamaño ")

binItem. Servidor SaveToFile. MapPath(p_SavePath & strFnam), 2

binItem. close()

si objForm. Existe(Artículo)

objForm(Item)=strFnam

Otro

objForm. Agregar elemento, strFnam

Terminará si...

Save=True

Terminará si...

Finalizar función

Función pública GetData(Item)

GetData= " "

Si objForm. existe(item&"_From")entonces

si obtiene ferr(obj form(item&"_Size"), obj form(item&"_Ext"))<& gt0 entonces sale de la función

binForm. posición = obj form(Item & " _From ")

GetData=binFormStream. Leer(obj form(Item & " _Size "))

Terminará si...

Finalizar función

Formulario de función pública (item)

p>

si objForm.

Existe(proyecto)

Form=objForm(proyecto)

Otro

Form=" "

Terminará si...

p>

Función final

Función privada BinVal2(bin)

dim lngValue, I

lngValue = 0

Para i = lenb(bin) al paso 1-1

lngValue = lngValue * 256+ascb(midb(bin, I, 1))

Entonces

BinVal2 =lngValue

Función final

Función privada Bin2Val(bin)

dim lngValue, I

lngValue = 0

Para i = 1 a lenb(bin)

lngValue = lngValue * 256+ascb(midb(bin, I, 1))

Entonces

Bin2Val=lngValue

Finalizar función

Finalizar clase

% & gt

********* *** *******************************************

uploadsSubir configuración y llamar al archivo, el código es el siguiente:

& lt! -# incluir ARCHIVO = " clase de carga . ASP "-& gt>& gt>& lt%

solicitud dim 2, claramente

Crear objeto de carga

Establecer solicitud 2 = nueva clase de carga

El tamaño total de carga es 20 M.

Solicitud 2. TotalSize= 20971520

El archivo único máximo es 10M.

Solicitud 2. MaxSize = 10485760

Formatos de archivo que se pueden cargar

Solicitud 2. FileType = "rar/zip/jpg "

Establezca el directorio para cargar archivos, utilizando rutas relativas. Preste atención a la existencia del directorio de configuración; de lo contrario, se producirá un error. Si se establece en nulo, los archivos se cargarán en el directorio raíz.

Solicitud 2. SavePath="upload/"

request2.open()

Establezca la variable ming en la ruta y el nombre del archivo cargado.

ming=Solicitud 2. Guardar ruta y solicitar 2. form(" strFile1 ")

Escribe la ruta del archivo y el nombre del archivo en el formulario para su envío en la página de envío de la base de datos.

response.write "<script>parent.document.form1.content.value='"&明&</script>"

% & gt

** **************************************** *******

Up.asp, utilice el siguiente código para cargar la página del formulario de envío.

& ltform action = " subir . ASP " método = " post " enctype = " multipart/form-data " nombre = " formulario " & gt;

& ltinput type = " file " nombre = " strfile 1 " id = " strfile 1 " >>p>

& ltTipo de entrada = " enviar " nombre = " enviar " valor = " enviar " >>p>

& lt / formulario>

****************************************** * *************

Index.asp, tu propia página de envío, solo escribo el código para la parte del formulario.

& ltform nombre = " formulario 1 " método = " POST " acción = " " & gt;

& ltinput nombre = " título " tipo = " texto " id = " título " >

& ltbr & gt& ltbr & gt

& ltinput nombre = " contenido " tipo = " texto " id = " contenido " >>p>

& ltbr & gt& ltiframe src = " arriba . ASP " nombre = " arriba " ancho = " 300 " ancho de margen = " 0 " alto = " 30 " alto de margen = " 0 " align = " medio " desplazamiento = " no " borde del marco = " 0 " & gt; & lt/iframe & gt;

& ltTipo de entrada = " enviar " nombre = " enviar " valor = " subir "

& ltbr & gt

& ltinput type = " oculto " nombre = " MM _ insert " valor = " formulario 1 " >>p>

& lt/form & gt;

Ok Muy bien , hecho. Aquí se utiliza la carga sin componentes. Puede modificarlo a la versión que desee según sea necesario y puede cargar varios archivos. Puedes estudiar el código fuente de Downwind.

Además, la parte principal del programa que deseas es la que está en upload.asp:respuesta. "Escribir"