webForumDet fria alternativet

aspSmartUpload "ta med sig objekt"

ASP

16 svar · 367 visningar · startad av leancuisine

Medlem sedan jan. 2002160 inlägg
Frågan#1

Hej !

Häller på och donar med ASP-smartupload och det går väldigt bra. Men, jag vill kunna ta med mig "objektet" till en ny sida.

Sid 1
formulär -- fyll i ditten och datten och välj en bild.

Sid 2
flrhandsgranskning med hjälp av mySmartUpload-egenskaper för att hämta ur formuläret, med bilden (hämtad från användarens hårddisk enligt <input file>-fältet.
på sidan finns en massa hidden-fält med variablerna från sidan 1, redo att postas om användaren vill gå vidare

Sid 3
lägg in variabler i databas och ladda upp bild i mapp på servern

Problemet är att jag inte lyckas plocka med mig filen till sidan 3. Jag vet inte hur jag lägger den i ett hidden-field. Lyckas ta med mig filepath till användarens lokala fil från sid 2 till 3, men lyckas inte få mySmartUpload att uppfatta det som ett uppladdningsbart objekt då. Det verkar som om den bara kan ta emot anvisning till fil om den legat i en <input type=file> på sidan som man postade från. Då kan jag inte köra förhandsgransnkningen... Retligt... Finns det någon som har tips och råd? Går det att ta med sig aspSmartUpload-objekt över flera sidor? Eller måste det vara pang-bom direkt?

Tacksam för tips

Medlem sedan juni 200032 967 inlägg
#2

Du måste nog spara filen i en tempmapp på sida 2, och posta med filnamnet i ett hidden-fält. Sedan är det bara att rensa tempmappen.

mvh,

Medlem sedan jan. 2002160 inlägg
#3

Tack för hjälpen. Dett dumma är att jag inte har rätt att deleta filer via Server.CreateObject på webbhotellet, vilket i o f s är ganska okej med tanke på säkerhetsnivån. Kan nog skaffa det om jag frågar, men hade tänkt att inte bry mig om det eftersom det inte kommer att bli så mpnga filer som laddas upp. Det är ett admin-gränssnitt...

Det verkar inte fungera som jag tänkt. Har kollat på aspSmarts sida men det är väldigt lite info.

Eftersom jag kan "ta med mig" på filnamn och sökväg, hade jag hoppats hitta ett sätt att ge smartUpload den informationen "för hand" via hänvisning till hidden-fält-variablerna, en gång till på sidan 3. Men hittar ingen syntax som fungerar. Den vekrar bara ta emot info om en fil direkt ur <input type=file>...

Usch... trist...

Försökte laborerar med saker som

intCount = mySmartUpload.Save(Server.mappath(pathVarFile), "filnamn.gif", mySmartUpload.Form("filsokvag"))
Medlem sedan jan. 2002160 inlägg
Medlem sedan jan. 2002160 inlägg
#5

Finns det något sätt att, kanske med Javascript, ange vad som ska stå i <input type="file"> på användarens sida. Det funkar inte med att ange value ex. <input type="file" value="c:\bla bla bla">. Jag har ju sökvägen från sidan 1. Då kan ju aspSmartupload få ett, ur sitt snöda perspektiv, "nytt" objekt att jobba med på sid 3, men användarens slipper välja bild en gång till...

Medlem sedan juni 200032 967 inlägg
#6

Nej, av säkerhetsskäl kan du inte ge file-boxen en förvald fil.

Medlem sedan jan. 2002160 inlägg
#7

Tack igen Anders!

Det är i o f s ganska rimligt att file-boxen har den begränsningen.

Jag kom att tänka på en annan sak -- skulle det inte kunna finnas något sätt att "reposta" formuläret från sidan 1 om sidan 2 godkänns? Kan man spara en "post" från ett formulär och återanvända den?

Medlem sedan juni 200032 967 inlägg
#8

Just filobjekt är problem, det har jag aldrig provat på själv.
Det är normalt inga problem att återposta ett formulär, men det är beroende av att man kan lägga datat i hiddenfält.

Vad använder du för dbms? Du skulle möjligen kunna mellanlagra bilden i databasen.

Mvh,

Medlem sedan jan. 2002160 inlägg
#9

Jag kör Access i det här fallet, men jag har inte satt mig in i hur man visar en bild på en webbsida från databasen. Ett alternativ är ju att lagrar dem i databasen hela tiden, då kan de jui också deletas när posten tas bort. Kanske har du en färdig kodsnutt till det? Jag har testat och lyckats ladda upp filen som en Long Binary Data eller vad det heter i ett skede av utvecklingensarbetet tidigare... Eftersom det ju inte är så många bilder borde det ju gå ganska bra.

Det jag skulle önska mig vore helst att det fanns ett sätt att ange direkt till aspSmartUpload att "ta den här filen -filnamn, sökväg- och ladda upp den".

Medlem sedan jan. 2002160 inlägg
#10

Fy f*n vad häftigt! Jag fick det att funka med att hämta ut bilder ur Access! Så himla läckert!

Kanske är det bättre att köra MySQL om jag nu ska spara bildfiler. Jag har hört att Access databasen upptar lika mycket minne även efter att man deletar poster. Det skulle ju innebära att om man lägger till och tar bort 20 bilder 50 gånger så blir det ju en gigantesk affär, som en uppsvullen vätebomb.... Har någon annan hört talas om det här med Access? Eller är det inte sant? Jag har bara hört det från en kille än så länge...

Medlem sedan juni 200032 967 inlägg
#11

Jag använder inte själv access, men jag skulle gärna vilja se hur du löste biffen.

Och, vad jag har hört, så kan det vara vettigt att komprimera databasen (eller vad det nu kan tänkas heta. ;) ) lite då och då om den är hyfsat transaktionsintensiv och utrymme är en issue.

Mvh,

Medlem sedan jan. 2002160 inlägg
#12

Tja! Jag visar gärna -- är lite smånöjd med mig själv som fixade det :)

På sidan man vill visa bilden öppnar man DB-connection och RecSet i vanlig ordning. På det ställe du vill skriva ut bilden skriver du sedan:
------------------
<% Response.ContentType = "image/gif" %>
<IMG SRC="/bild.asp?ID=<% =RecSet("ID") %>">
-----------------

För bildvisning skapar man en säskild fil, i mitt fall bild.asp, som får sig tillskickat ett ID på databasposten via QueryString.

Sjäva filen bild.asp ser ut så här:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<!-- #include virtual="/adovbs.inc" -->
<% Set Connect = Server.CreateObject("ADODB.Connection") %>
<!-- #include virtual="/path.asp" -->

<% Connect.Open "driver={Microsoft Access Driver (*.mdb)}; DBQ=" & path & ";"

' hämta bildens ID från querystring
ID=Request.Querystring("ID")

Visa = "SELECT bildfil FROM minDatabas WHERE ID=" & ID

Set RecSet = Connect.Execute(Visa)

Response.ContentType = "image/gif" %>

<% Response.BinaryWrite RecSet("bildfil") %>

<%
' Destruction of DB connection
' ***********
RecSet.Close
Connect.Close
Set RecSet = Nothing
Set Connect = Nothing
%>

:stud

Medlem sedan mars 20015 287 inlägg
#13

Ser bra ut tycker jag, trodde faktist inte att det var "så lätt" att visa en bild lagrad i en databas.

Ett par anmärkningar: du kanske ska dra ner på antlet kodväxlingar i bild.asp ( <% %> ) samt varför inkluderar du adovbs.inc? Känns som REJÄL överkurs.

Medlem sedan jan. 2002160 inlägg
#14

Tack för tipsen solbulle. Jag antar att kodväxlingarna gör att exekveringen blir längre. Bra tips att minska dem! :)

Tja, adovbs.inc, är en kodsnutt som hänger med i mina connection rader sedan någon tutorial eller skript som jag byggt om i början av min karriär som ASP-snunbbe. Själv har jag inget bra grepp om vad det uträttar. Tack för det tipset också :) Det ryker samtidigt med kodväxlingarna.

Och ja, visst är det härligt och häftigt att kunna "tuta ut" bilder ur en databas!!!

Medlem sedan jan. 2002160 inlägg
#15

Det visade sig att adovbs.inc behövs för uppdateringar av ett RecordSet. Det behövs inte i det här exemplet, men när jag laborerade med admin-sidan för att byta bild strejkade servern, utan adovbs.inc...

Medlem sedan feb. 20022 594 inlägg
#16

Det behövs inte i uppdatering i vanliga fall heller.

Medlem sedan juni 200032 967 inlägg
#17

leancuisine skrev:

Det visade sig att adovbs.inc behövs för uppdateringar av ett RecordSet. Det behövs inte i det här exemplet, men när jag laborerade med admin-sidan för att byta bild strejkade servern, utan adovbs.inc...

Nej, den filen behövs aldrig. Däremot kan det tänkas att man behöver använda konstanter som definieras i den filen. Det är dock mycket smartare att definiera dessa konstanter direkt i din asp-fil eller använda konstanternas värden direkt i din kod.

Öppna adovbs.inc i en texteditor så ser du vilka konstanter som definieras där.

Mvh,

312 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
166 ms — deklarationer (db)
0 ms — hämta statistik (cache)
139 ms — hämta tråd, inlägg och bilagor (db)
160 ms — ändringar (db)