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,
16 svar · 367 visningar · startad av leancuisine
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
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,
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"))
här finns modellen förresten:
http://www.aspsmart.com/aspSmartUpload/
http://www.aspsmart.com/aspSmartUpload/liblocal/docs/Map.htm
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...
Nej, av säkerhetsskäl kan du inte ge file-boxen en förvald fil.
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?
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,
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".
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...
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,
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
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.
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!!!
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...
Det behövs inte i uppdatering i vanliga fall heller.
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,