18. september 2001 - 11:59Der er
19 kommentarer og 1 løsning
Nogen der kender denne: CreateObject(\"SoftArtisans.FileManager\")?
Jeg fandt på et tidspunkt en stump kode herinde, som skulle tvinge en fil til at downloades, og jeg fik den til at virke på min server/computer (nt4/win2000) Nu står jeg og skal bruge den, og så kan jeg ikke få det til at virke. Så vidt jeg kan se, skal jeg have noget software fra softartisans, men det synes jeg ikke jeg skulle da jeg sidst prøvede det. Den fulde kode kommer her: <%
Response.Expires = 0 Response.Buffer = TRUE
picName = request.querystring(\"picName\") path = \"./\" \' sti til dine billeder
Set uAgent = Request.ServerVariables(\"HTTP_USER_AGENT\") if (inStr(uAgent, \"IE\")) Then \' Explorer Response.ContentType = \"m_type\" Response.AddHeader \"Content-Disposition\", \"atachment; filename=\"& picName Else \' NetScape Response.ContentType = \"application/octet-stream\" Response.AddHeader \"Content-Disposition\", \"attachment; filename=\"& chr(34) & picName & chr(34) End if
Dim oFM, oBS Set oFM = CreateObject(\"SoftArtisans.FileManager\") Set oBS = oFM.OpenBinaryFile(server.mappath(path&picName))
Response.BinaryWrite oBS.ReadAll
Set oBS = Nothing Set oFM = Nothing
Response.Flush %> Jeg ved kun meget lidt om asp, jeg synes stadig request.querystring er ret smart.
Det er en skuffelse men FileSystemObject kan kun arbejde med tekst filer. Du er nødt til at lave dit ActiveX object i Visual Basic, og objektet skal have denne funktion:
\'return an array of bytes (binary file) Public Function GetFileBytes(ByVal FullFilePath) As Variant Dim ctBytes As Long Dim bytes() As Byte Dim fno As Long
On Error GoTo err_GetFileBytes
fno = FreeFile Open FullFilePath For Binary Access Read As #fno ctBytes = LOF(fno) ReDim bytes(ctBytes) Get #fno, , bytes Close #fno
GetFileBytes = bytes Exit Function
err_GetFileBytes: Err.Raise vbObjectError + 100, \"Error while reading \'\" & FullFilePath & \"\'\", Err.Description GetFileBytes = Array(0) Exit Function
End Function
Så kan du oprette dit objekt med:
Set oFM = CreateObject(\"Project.Class\") Response.BinaryWrite oFM.GetFileBytes(server.mappath(path&picName))
Du kan også prøve med dette - men ved ikke om det fungerer:
Set oFM = CreateObject(\"Scripting.FileSystemObject\") Set oFile = oFM.OpenTextFile(server.mappath(path&picName)) Response.BinaryWrite oFile.ReadAll oFile.Close set oFile = nothing
OK, det var en ordentlig omgang. Jeg har sandsynligvis brugt det forkert, jeg ved som sagt ikke så meget om det her. Min side ser nu sådan her ud: <% \'return an array of bytes (binary file) Public Function GetFileBytes(ByVal FullFilePath) As Variant Dim ctBytes As Long Dim bytes() As Byte Dim fno As Long
On Error GoTo err_GetFileBytes
fno = FreeFile Open FullFilePath For Binary Access Read As #fno ctBytes = LOF(fno) ReDim bytes(ctBytes) Get #fno, , bytes Close #fno
GetFileBytes = bytes Exit Function
err_GetFileBytes: Err.Raise vbObjectError + 100, \"Error while reading \'\" & FullFilePath & \"\'\", Err.Description GetFileBytes = Array(0) Exit Function
End Function
Set oFM = CreateObject(\"Project.Class\") Response.BinaryWrite oFM.GetFileBytes(server.mappath(\"gif/b10a.gif\"))
%> Og der kommer en fejlmeddelse ved første linie, hvor variablene bliver deklareret. Skal koden ligge i en seperat fil?
Ups, undskyld, mig der havde lavet et par fejl, såsom ikke at skrive navnet på filen. Nu downloader den filen, men men den forsøger stadig at downloade min asp side, og kommer med et vindue i explorer hvor der står Handlingen er annuleret, der kunne ikke oprettes....
På min server eller min egen maskine? Jeg bruger tit sådan en her uden problemer: Set Conn = Server.CreateObject(\"ADODB.Connection\") Men det har måske ikke så meget med sagen at gøre? Løsningen skulle gerne kunne virke på alle maskiner uden problemer.
Nu har jeg kigget lidt på det hele en gang til. Den virker som om den downloader min asp-side, men det gær den ikke. Den downloader til gengæld en fil der hedder det den skal, men den indeholder teksten: <font face=\"Arial\" size=2> <p>Microsoft VBScript runtime </font> <font face=\"Arial\" size=2>error \'800a01ad\'</font> <p> <font face=\"Arial\" size=2>ActiveX component can\'t create object: \'ADODB.Stream\'</font> <p> <font face=\"Arial\" size=2>/detaljer/loader.asp</font><font face=\"Arial\" size=2>, line 20</font> Så det er vel stadig ado der skal opgraderes. Så mangler jeg lige at vide hvor det skal ske henne, det virker på den side du linkede til som om det er på min maskine.
Undskyld vores netværk gik ned, og da det kom op igen, havde jeg glemt denne diskussion igen. Jeg fik det til at virke på min maskine, men det skal lægges ud på nogle servere jeg ikke har kontrol over, og der har jeg ikke kunne få det til at virke, så det blev en lidt hypotetisk diskussion. Men tak for svarene/hjælpen!
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.