A linha 339 é essa: objStream.LoadFromFile strFilePath
Segue o código abaixo:
<td valign="middle">
<a href="BAC54_arqareadocliente.asp?nomeArq=<%=rs.fields("nome_orig")%>&arquivo=<%=rs.fields("nome")%>"><%=rs.fields("nome_orig")%></a>
</td>
<td>
<%
'cria o objeto Scripting.FileSystemObject e atribui a variável objFSO
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
'pega o caminho e características da pasta "documentos" e atribui a objFolder
Set objFolder = objFSO.GetFolder(Server.MapPath("documentos"))
'Escreve no navegador o caminho completo da pasta (Ex: E:\inetpub\wwwdata\exemplo\html\Teste\sistema\documentos
'Response.write objFolder.Path
'Response.Write objFolder.Size & "em byte" 'Retorna o tamanho total da pasta, incluindo todos os seus arquivos.
Set fc = objFolder.Files
totalArq = fc.count
tamArq = Server.MapPath (".") & "\" & objFolder.Name
'Response.Write(tamArq)
Set arqObj = objFSO.GetFile(tamArq&"\"&rs.fields("nome"))
'Response.Write round(arqObj.Size / 1024) & " KB"
'varDataUacesso = varDataUacesso & arqObj.DateLastAccessed
'imprimo o nome do arquivo.
'Response.write arqObj.Name
'Response.write objFolder.Name &"\"& arqObj.Name
'--------------------------------------------
Response.Buffer = True
Dim strFilePath, strFileSize, strFileName
Const adTypeBinary = 2
'strFilePath = "C:\ whatever the path is "
strFilePath = objFolder.Path
'strFileSize = ... the size of file .. optional
strFileName = arqObj.Name
Response.Clear
'8*******************************8
' Requires MDAC 2.5 to be stable
' I recommend MDAC 2.6 or 2.7
'8*******************************8
Set objStream = Server.CreateObject("ADODB.Stream")
objStream.Open
'objStream.Type = adTypeBinary
objStream.LoadFromFile strFilePath
strFileType = lcase(Right(strFileName, 4))
' Feel Free to Add Your Own Content-Types Here
Select Case strFileType
Case ".asf"
ContentType = "video/x-ms-asf"
Case ".avi"
ContentType = "video/avi"
Case ".doc"
ContentType = "application/msword"
Case ".zip"
ContentType = "application/zip"
Case ".xls"
ContentType = "application/vnd.ms-excel"
Case ".gif"
ContentType = "image/gif"
Case ".jpg", "jpeg"
ContentType = "image/jpeg"
Case ".wav"
ContentType = "audio/wav"
Case ".mp3"
ContentType = "audio/mpeg3"
Case ".mpg", "mpeg"
ContentType = "video/mpeg"
Case ".rtf"
ContentType = "application/rtf"
Case ".htm", "html"
ContentType = "text/html"
Case ".asp"
ContentType = "text/asp"
Case Else
'Handle All Other Files
ContentType = "application/octet-stream"
End Select
'Response.AddHeader "Content-Disposition", "attachment; filename= strFileName
Response.AddHeader "Content-Length", strFileSize
' In a Perfect World, Your Client would also have UTF-8 as the default
' In Their Browser
Response.Charset = "UTF-8"
Response.ContentType = ContentType
Response.BinaryWrite objStream.Read
Response.Flush
objStream.Close
Set objStream = Nothing
Pergunta
Martinsrj
Estou tentando aplicar um código que quando o usuario clicar no link o arquivo não abra no navegador e obrigue o usuario a realizar o downloads.
Erro abaixo:
ADODB.Stream error '800a0bba'
File could not be opened.
/exemplo/html/teste/sistema/bac54_arqareadocliente.asp, line 339
----------------------------------------------------------------------------------------------------
A linha 339 é essa: objStream.LoadFromFile strFilePath
Segue o código abaixo:
<td valign="middle"> <a href="BAC54_arqareadocliente.asp?nomeArq=<%=rs.fields("nome_orig")%>&arquivo=<%=rs.fields("nome")%>"><%=rs.fields("nome_orig")%></a> </td> <td> <% 'cria o objeto Scripting.FileSystemObject e atribui a variável objFSO Set objFSO = Server.CreateObject("Scripting.FileSystemObject") 'pega o caminho e características da pasta "documentos" e atribui a objFolder Set objFolder = objFSO.GetFolder(Server.MapPath("documentos")) 'Escreve no navegador o caminho completo da pasta (Ex: E:\inetpub\wwwdata\exemplo\html\Teste\sistema\documentos 'Response.write objFolder.Path 'Response.Write objFolder.Size & "em byte" 'Retorna o tamanho total da pasta, incluindo todos os seus arquivos. Set fc = objFolder.Files totalArq = fc.count tamArq = Server.MapPath (".") & "\" & objFolder.Name 'Response.Write(tamArq) Set arqObj = objFSO.GetFile(tamArq&"\"&rs.fields("nome")) 'Response.Write round(arqObj.Size / 1024) & " KB" 'varDataUacesso = varDataUacesso & arqObj.DateLastAccessed 'imprimo o nome do arquivo. 'Response.write arqObj.Name 'Response.write objFolder.Name &"\"& arqObj.Name '-------------------------------------------- Response.Buffer = True Dim strFilePath, strFileSize, strFileName Const adTypeBinary = 2 'strFilePath = "C:\ whatever the path is " strFilePath = objFolder.Path 'strFileSize = ... the size of file .. optional strFileName = arqObj.Name Response.Clear '8*******************************8 ' Requires MDAC 2.5 to be stable ' I recommend MDAC 2.6 or 2.7 '8*******************************8 Set objStream = Server.CreateObject("ADODB.Stream") objStream.Open 'objStream.Type = adTypeBinary objStream.LoadFromFile strFilePath strFileType = lcase(Right(strFileName, 4)) ' Feel Free to Add Your Own Content-Types Here Select Case strFileType Case ".asf" ContentType = "video/x-ms-asf" Case ".avi" ContentType = "video/avi" Case ".doc" ContentType = "application/msword" Case ".zip" ContentType = "application/zip" Case ".xls" ContentType = "application/vnd.ms-excel" Case ".gif" ContentType = "image/gif" Case ".jpg", "jpeg" ContentType = "image/jpeg" Case ".wav" ContentType = "audio/wav" Case ".mp3" ContentType = "audio/mpeg3" Case ".mpg", "mpeg" ContentType = "video/mpeg" Case ".rtf" ContentType = "application/rtf" Case ".htm", "html" ContentType = "text/html" Case ".asp" ContentType = "text/asp" Case Else 'Handle All Other Files ContentType = "application/octet-stream" End Select 'Response.AddHeader "Content-Disposition", "attachment; filename= strFileName Response.AddHeader "Content-Length", strFileSize ' In a Perfect World, Your Client would also have UTF-8 as the default ' In Their Browser Response.Charset = "UTF-8" Response.ContentType = ContentType Response.BinaryWrite objStream.Read Response.Flush objStream.Close Set objStream = NothingLink para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.