Puntuación alta para el código de archivo de carga ASP
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)&chrb( 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 p>
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 ") p>
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> p>
Seleccione el caso strFnam
Caso 0: strFnam=GetTimeStr()
if strFext & lt& gt""Entonces strFnam = strFnam & amp"."& ampstrFext p>
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 p>
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 p>
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"