Hej, Hej! Tack för länken! Ska du radera ur databasen så är det DELETE du ska använda dig av, kolla lite bland artiklarna här så hittar du en del om asp och databaser. Hej, Gör en funktion som hämtar bildnamnet, stoppa in det i en variabel. Det är ju precis som Anna-Karin säger. Hej, Vad är det för information om bilden som du ska spara då? Hej, Mickael. Hej Benni, Kolla på Artikel [Ladda upp filer via asp utan komponent] och Artikel [Ladda upp filer via asp # 2 Spara på olika sätt] Hej Anna-Karin, Hej Igen, som du ser är deklarationerna dubbla och det får det inte vara.. Okej, jag har inte gjort denna funktion innan så jag är lite "ny" på denna! Jag har testat att ta bort dem dubbla deklarationerna men nu fick jag följande felmeddelande: Fått in filnamnet i databasen! Jag har gjort en variant på delete-funlktionen men jag vet Inte vad jag ska skriva för plats filen ligger på! Hej, Nix X-et menade jag skulle vara en mapp som låg i samma mapp som sidan.Ta bort bilder ur en mapp
Sökt ibland artiklar/forum men inte funnit vad jag sökt.
Det jag vill veta är om det är möjligt med "bara" Asp-kod att ta bort bilder ur en mapp.
Att lägga till text om artikeln samt en bildlänk i databasen går ju bra men hur är det om man vill ta bort Allt som har med en viss post(artikel) att göra.
Tänker att mappen med bilder kan ju bli Rätt "stor" efter ett tag.
Ha det!
MickeSv: Ta bort bilder ur en mapp
Ta en titt på File System Object: http://www.sloppycode.net/Reference/FSO/Ref-124.html
Glöm inte att ge IIS-kontot rättighet att ändra/skriva, annars får du ett felmeddelande.Sv:Ta bort bilder ur en mapp
Kan man omsätta koden att ta bort ett dokument till att ta bort en bild som motsvarar en viss post i databasen?
Har inte gjort detta innan så jag håller på att lära mig :)
MickeSv: Ta bort bilder ur en mapp
//Anna-KarinSv:Ta bort bilder ur en mapp
Det är inte riktigt det jag vill utan jag vill ta bort poster i en databas MEN SAMTIDIGT ta bort bilden som tillhör posten men som ligger i en enskild mapp.
I databasen finns bara länken till bilden.
MickeSv: Ta bort bilder ur en mapp
Kolla med FSO om bilden finns, om den gör det radera bilden.
Sen raderar du posten i databasen.
Ska se om jag hittar koden jag använde förut.
//Anna-KarinSv:Ta bort bilder ur en mapp
Om vi antar att du har en sida, som visar alla posterna(inkl namnet på bilden), så gär du
id till en länk.
<TD ALIGN=RIGHT><A HREF="UpdRec.asp?Id=<% = rst("Id") %>">
Kom ihåg att du måste ha med bildnamnet mellen formtaggarna.
Sen så på UpdRec.asp någonting så här
<code>
sBild = Request("Bild")
filename="c:\test\" & sBild
Set fso = CreateObject("Scripting.FileSystemObject")
set mainfile=fso.GetFile(filename)
mainfile.Delete
Connection.Execute("DELETE FROM MinTable WHERE ID ="& Request("Id"))
</code>OBS
Detta är skrivet direkt ur huvudet, alltså otestat, men prencipen bör vara riktig.
Sv: Ta bort bilder ur en mapp
suttit och försökt förstå hur jag ska göra men ÖRRRRK!
Försöker få till att kunna ladda upp bilder i en mapp och tillhörande info i en databas men fy f_n...
Jag får det Inte rätt!
Har Ni något kodexempel där man kan se HUR man kan göra?
Sökt efter någon artikel men inte sett något där jag förstod!
Alla handla ju bara om hur man laddar upp en bild i en mapp men jag vill ju ha info Om BILDEN i en databas så att jag på en sida kan visa bilden och tillhörande info.
Mvh MickeSv:Ta bort bilder ur en mapp
Namnet är väl självklart, men ska du även spara måtten på bilden
//Anna-KarinSv: Ta bort bilder ur en mapp
Bilden är tänkt som erbjudande så jag vill skicka med info om erbjudandet, rubrik och pris.
Tack för att NI är hjälpsamma!
Uppskattas!
MickeSv:Ta bort bilder ur en mapp
Testade det förslaget som jag skrev ner eller hoppade du över det?
Om vi inte vet exakt vad som går snett, så är det väldigt svårt att hjälpa dig.Sv: Ta bort bilder ur en mapp
Jag håller på att försöka få uppladdningen rätt MEN det går åt .......!
Får felmeddelandet:
Cannot call BinaryRead
Cannot call BinaryRead after using Request.Form collection.
Försöker kombinera en bilduppladdning-funktion gjord som ett exempel på en sida samt min egna info-uppladdning i en databas men icke...
Såhär ser koden ut på laddaupp-sidan (en del kod, jag vet :)):
<!--#include file="koppling.asp" -->
<%
'**********************************************
' #==== Ladda upp bildinfo, gjord av Micke====#
Dim Conn, ConnString, info, rubrik, pris, lank ' HUR GÖR JAG MED: länk ????
info = Request.Form("info")
rubrik = Request.Form("rubrik")
pris = Request.Form("pris")
lank = Request.Form("bildlank")
Set Conn = Server.CreateObject("ADODB.Connection")
ConnString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("db/bilduppladdning.mdb")
Conn.Open ConnString
Set rs = Conn.Execute ("Insert INTO erbjudande (info, rubrik, pris, lank) Values ('"& info &"' , '"& rubrik &"' , '"& pris &"' , '"& lank &"') ")
Conn.Close
Set Conn = Nothing
' #===== Slut på att ladda in info i databasen =====#
'*****************************************************
' Uppladdningskoden
If Request("do") = "laddaupp" Then
' Startar en funktion som finns längre ner i koden
Dim fil
Set fil = get_upload_files()
' Koden som laddar upp filen med hjälp av funktionen
Dim plac, filen, innehall
innehall = fil("upload").Item("content")
Set filen = filer.CreateTextFile(mapp2 & "\" & extract_filename(fil("upload").Item("filename")))
For plac = 1 to LenB(innehall)
filen.Write chr(AscB(MidB(innehall, plac, 1)))
Next
filen.Close
Set filen = Nothing
Response.Redirect Request.ServerVariables("HTTP_REFERER")
END IF
%>
<%
' funktionen som används för uppladdning av filer
Function get_upload_files()
Dim upload_object, request_binaries
Dim position_start, position_end
Dim boundary, boundary_pos
Set upload_object = Server.CreateObject("Scripting.Dictionary")
request_binaries = Request.BinaryRead(Request.TotalBytes)
position_start = 1
position_end = InstrB(position_start, request_binaries, get_byte_string(chr(13)))
boundary = MidB(request_binaries, position_start, (position_end - position_start))
boundary_pos = InstrB(1, request_binaries, boundary)
Do Until (boundary_pos = InstrB(request_binaries, boundary & get_byte_string("--")))
' Om du stäng ner webbläsaren, då avslutas uppladdningen
If Not(Response.IsClientConnected) Then Response.End
Dim name, pos_file
position_start = (InstrB(InstrB(boundary_pos, request_binaries, get_byte_string("Content-Disposition")), request_binaries, get_byte_string("name=")) + 6)
position_end = InstrB(position_start, request_binaries, get_byte_string(chr(34)))
name = get_string(MidB(request_binaries, position_start, (position_end - position_start)))
pos_file = InstrB(boundary_pos, request_binaries, get_byte_string("filename="))
If ((pos_file <> 0) AND (pos_file < InstrB(position_end, request_binaries, boundary))) Then
upload_object.Add name, Server.CreateObject("Scripting.Dictionary")
position_start = (pos_file + 10)
position_end = InstrB(position_start, request_binaries, get_byte_string(chr(34)))
upload_object.item(name).Add "filename", get_string(MidB(request_binaries, position_start, (position_end - position_start)))
position_start = (InstrB(position_end, request_binaries, get_byte_string("Content-Type:")) + 14)
position_end = InstrB(position_start, request_binaries, get_byte_string(chr(13)))
upload_object.item(name).Add "content-type", get_string(MidB(request_binaries, position_start, (position_end - position_start)))
position_start = (position_end + 4)
position_end = InstrB(position_start, request_binaries, boundary) - 2
upload_object.item(name).Add "size", ((position_end - position_start))
upload_object.item(name).Add "content", MidB(request_binaries, position_start, (position_end - position_start))
End If
boundary_pos = InstrB(boundary_pos + LenB(boundary), request_binaries, boundary)
Loop
Set get_upload_files = upload_object
End Function
Function get_byte_string(str)
Dim cnt
For cnt = 1 to Len(str)
get_byte_string = get_byte_string & chrB(AscB(Mid(str, cnt, 1)))
Next
End Function
Function get_string(str)
Dim cnt
For cnt = 1 to LenB(str)
get_string = get_string & chr(AscB(MidB(str, cnt, 1)))
Next
End Function
Function extract_filename(filename)
extract_filename = Right(filename, Len(filename) - InStrRev(filename, "\", -1, 1))
End Function
%>
Har Du något annat exempel får Du gärna berätta...
Micke
Sv:Ta bort bilder ur en mapp
Sen så kommer du inte åt objekten genom form längre utan genom MyRequest.
myRequest("Supp_Name") Om du tittar på artiklarna så kommer du att se att vi döpt om objekten till myRequest.
//Anna-KarinSv: Ta bort bilder ur en mapp
Tack för länkarna, vet inte varför jag sett dem innan fast jag sökt som en dåre!
Skulle detta exempel fungera med min tanke att kunna ladda upp en bild och SAMTIDIGT lägga in info i en databas som hålls samman till bilden?
Kan man göra så att man på den idan man sen presentera bilde/info kan klicka på ett erbjudande så att det visas i ett eget fönster fast i större storlek, tänker på personer som inte ser Så bra.
Stort Tack, sålänge!
MickeSv:Ta bort bilder ur en mapp
Testat att få ihop min önskade kombination men jag fick bara felmeddelandet:
Expected identifier
Function GetFieldName(infoStr) ...
--------------------------------^
Tänkte visa hur jag gjorde Innan jag börjar ändra för mycket!
Här är koden:
main.ap
<form action="upload.asp" enctype="multipart/form-data" method="post" name="f" id="f">
Välj en fil att ladda upp:<br>
<input type="file" name="test" size="50"><br>
<input type="radio" name="filename" value="original" checked>Använd originalnamnet
<br>
<input type="radio" name="filename" value="userSpecified">Använd följande namn:
<input type="text" name="userSpecifiedName" value="">
<br>
Rubrik: <input type="text" name="rubrik"><br>
Pris: <input type="text" name="pris"><br>
Info: <input type="text" name="info"><br>
<input type="submit" value="skicka filen">
</form>
upload.asp
<%
' Justera tiden beroende på hur stora filer du kommer tillåta att skicka
Server.ScriptTimeout = 5400
Const ForWriting = 2
Const TristateTrue = -1
CrLf = Chr(13) & Chr(10)
'Funktionen för att hämta ut ett värde av ett specifikt fältnamn:
'Denna funktion hämtar ett fälts namn
Function GetFieldName(infoStr) ...
Function GetFieldName(infoStr)
sPos = InStr(infoStr, "name=")
EndPos = InStr(sPos + 6, infoStr, Chr(34) & ";")
If EndPos = 0 Then
EndPos = inStr(sPos + 6, infoStr, Chr(34))
End If
GetFieldName = Mid(infoStr, sPos + 6, endPos - (sPos + 6))
End Function
'Funktion för att hämta ut filnamnet från den postade formen:
'Denna funktion hämtar fältets värde i filnamn
Function GetFileName(infoStr) ...
Function GetFileName(infoStr)
sPos = InStr(infoStr, "filename=")
EndPos = InStr(infoStr, Chr(34) & CrLf)
GetFileName = Mid(infoStr, sPos + 10, EndPos - (sPos + 10))
End Function
'Funktionen för att kontrollera att filen är av typen MIME:
' Denna funktion hämtar ett filens MIMEtyp
Function GetFileType(infoStr) ...
Function GetFileType(infoStr)
sPos = InStr(infoStr, "Content-Type: ")
GetFileType = Mid(infoStr, sPos + 14)
End Function
PostData = ""
' Hämtar hela headern som postats genom att hämta headerns storlek med dess data
Dim biData
biData = Request.BinaryRead(Request.TotalBytes)
' Tänk nu på att det är binär data så vi måste ändra detta till
' någonting som är hanterbart och läsbart.
For nIndex = 1 to LenB(biData)
PostData = PostData & Chr(AscB(MidB(biData,nIndex,1)))
Next
' När du använt BinaryRead så kan du inte använda Request-objektet. Därför måste vi
' hantera alla request-variablerna själva genom att hämta ut detta
ContentType = Request.ServerVariables( "HTTP_CONTENT_TYPE")
' delar upp datat
ctArray = Split(ContentType, ";")
' En fil som postas fungerar endast om du i formen satt "multipart/form-data"
' - så vi kontrollerar att det är gjort
If Trim(ctArray(0)) = "multipart/form-data" Then
ErrMsg = ""
' Hämta all data om formen
bArray = Split(Trim(ctArray(1)), "=")
Boundary = Trim(bArray(1))
' Splitta upp all denna indata
FormData = Split(PostData, Boundary)
' Dela upp informationen för varje variabel och data
Dim myRequest, myRequestFiles(9, 3)
Set myRequest = CreateObject("Scripting.Dictionary")
FileCount = 0
' För varje fält som finns i den postade formen
For x = 0 to UBound(FormData)
' Två CrLf markerar slutet på informationen om ett fält. Allt efter
' det är ett värde
InfoEnd = InStr(FormData(x), CrLf & CrLf)
If InfoEnd > 0 Then
' Hämtar informationen för aktuellt fält utom skräptecken i slutet på strängen
varInfo = Mid(FormData(x), 3, InfoEnd - 3)
' Hämtar värdet på fältet, vi tar bort CrLf både i början och i slitet
varValue = Mid(FormData(x), InfoEnd + 4,Len(FormData(x)) - InfoEnd - 7)
' Är detta filen eller fältet
If (InStr(varInfo, "filename=") > 0) Then
' placera vår fil i en stor array.
' Om du vill ladda upp flera filer på en gång så visas här hur du
' kan göra, men formen du postade från tillåter bara en så då får
' du göra om den så fler filen kan postas.
myRequestFiles(FileCount, 0) = GetFieldName(varInfo)
myRequestFiles(FileCount, 1) = varValue
myRequestFiles(FileCount, 2) = GetFileName(varInfo)
myRequestFiles(FileCount, 3) = GetFileType(varInfo)
FileCount = FileCount + 1
Else
' Detta är ett vanligt fält
myRequest.add GetFieldName(varInfo), varValue
End If
End If
Next
Else
ErrMsg = "Du har fel encoding typ!"
End If
' Om du tillåter mer filer än 1, gör om detta till en loop
' instansierar File ScriptingSystem (FSO)
Set lf = server.createObject("Scripting.FileSystemObject")
' vad valde användaren att använda för filnamn?
If myRequest("filename") = "original" Then
' Vad är det för klient som skickar filen, Machintosh skickar endast filnamnet
' medan Windows även skickar med sökvägen till filen.
BrowserType = UCase(Request.ServerVariables("HTTP_USER_AGENT"))
If (InStr(BrowserType, "WIN") > 0) Then
' Det är Windows med sökväg i
sPos = InStrRev(myRequestFiles(0, 2), "\")
fName = Mid(myRequestFiles(0, 2), sPos + 1)
End If
If (InStr(BrowserType, "MAC") > 0) Then
' Det är mac, endast filnamnet skickas
fName = myRequestFiles(0, 2)
End If
' här skapar du filnamnet som vi skall använda
FilePath = "./" & fName
Else
' använd det filnamn som användaren skrev istället
' Om användaren valt att spara med ett eget filnamn,
' då tar vi det istället.
FilePath = "./" & myRequest("userSpecifiedName")
End If
' anger sökvägen dit filen skall sparas
SavePath = Server.MapPath(FilePath)
' skapar objektet för att kunna spara en fil, finns den så skriver vi över den
Set SaveFile = lf.CreateTextFile(SavePath, True)
' Skriver filen (arrayen) till disk
SaveFile.Write(myRequestFiles(0, 1))
' stänger och frigör objektet
SaveFile.Close
' Lägga in info i databasen
Set Conn = Server.CreateObject("ADODB.Connection")
ConnString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("db/bilduppladdning.mdb")
Conn.Open ConnString
SQL = "Insert into erbjudande (filnamn, rubrik, pris, info) values(" & _
"'" & myRequestFiles(0,1) & "', " & _
"'" & myRequest("rubrik") & "', " & _
"'" & myRequest("pris") & "', " & _
"'" & myRequest("info") & "', " & _
Conn.Execute SQL
Conn.Close
Set Conn = Nothing
%>
<html>
<body>
<% If ErrMsg = "" Then %>
Tack för din fil, den har nu laddats upp!
<% Else %>
<%= ErrMsg %>
<% End If %>
</body>
</html>
Vad menas med felmeddelandet?
Känns som detta skulle kunna gå Bara jag får rätt på koden...:)
Micke
Sv: Ta bort bilder ur en mapp
Sv:Ta bort bilder ur en mapp
Vad menar Du?
Vil du förklara ytterliggare?
Edit: AHA menar du att själva funktion-deklarationen är dubbel?
Isåfall är dem två följande oxå det, dem som har ()...!
Jag har inte ändrat i koden utan den är som den var då jag kollade vad Du skrivit men varför är det så i koden? Är det något "slarvfel" eller ska det vara så på något sätt...
Mvh MickeSv: Ta bort bilder ur en mapp
Command text was not set for the command object.
och jag förstår att den inte kunde lägga in värdet i databasen men inte vilket och varför?
Den pekar på denna rad i koden : SQL = "Insert into erbjudande (filnamn, rubrik, pris, info) values(" & _
i databasen är fälten såhär:
id = räknare
rubrik = text
pris = text
info = text
filnamn = text (det är här jag vill länken till bilden ska vara)
Är det nått i databasen som jag ska ändra?
Edit: Jag har testat att göra om rubrik, pris, info till variabler och sen lägga in det men icke sa nicke...
EDIT!!! JAG FICK DET ATT LÄGGAS IN! KANON! min klant så använde jag .Form itället för myRequest vid variablerna!
Nu är koden:
' Lägga in info i databasen
Dim rubrik, pris, info
Set Conn = Server.CreateObject("ADODB.Connection")
ConnString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("db/bilduppladdning.mdb")
Conn.Open ConnString
rubrik = myRequest("rubrik")
pris = myRequest("pris")
info = myRequest("info")
SQL = "INSERT INTO erbjudande (rubrik, pris, info) VALUES ('"& rubrik &"', '"& pris &"', '"& info &"')"
'" & _
' "'" & myRequestFiles(0,1) & "', " & _
' "'" & myRequest("rubrik") & "', " & _
' "'" & myRequest("pris") & "', " & _
' "'" & myRequest("info") & "', " & _
Conn.Execute (SQL)
Conn.Close
Set Conn = Nothing
Men hur gör jag om jag vill spara en bildlänk i databasen som hör ihop men vald bild?
Micke
Sv:Ta bort bilder ur en mapp
blir dock med ./ förre namnet typ, ./bild.gif
Hur får jag bort det?
I databasen finns nu:
id = räknare
rubrik = text
pris = text
info = text
bild_url = text
och i Sql-satsen är det nu:
Dim rubrik, pris, info, bild_url
Set Conn = Server.CreateObject("ADODB.Connection")
ConnString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("db/bilduppladdning.mdb")
Conn.Open ConnString
rubrik = myRequest("rubrik")
pris = myRequest("pris")
info = myRequest("info")
bild_url = FilePath 'ELLER SKA JAG GÖRA PÅ ANNAT SÄTT?
SQL = "INSERT INTO erbjudande (rubrik, pris, info, bild_url) VALUES ('"& rubrik &"', '"& pris &"', '"& info &"', '"& bild_url &"')"
sakta men säkert går det Framåt :)
Men som sagt, Hur får jag filnamnet rätt i databasen och hur hämtar man sen ut bilden/texten?
EDIT: Byte till FName på variabeln bild_url och då fick jag bildnamet rätt i databasen alltå utan ./
Hur hämtar man nu ut det :)) Liksom, JAHA, nu då? Texten vet jag men hur gör man med bilden???
Edit: Jag har en ide! Vänta!
JAAAA!!!! JAG LYCKADES! ALLT SKRIVS UT SOM JAG VILL!
Nu får jag titta på hur man tar bort bilderna/texterna oxå! NY utmaning :)
Micke
Sv: Ta bort bilder ur en mapp
Såhär har jag gjort:
<%
ID = Request.QueryString("ID")
Set Conn = Server.CreateObject("ADODB.Connection")
ConnString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("db/bilduppladdning.mdb")
Conn.Open ConnString
Set rs = Conn.Execute "Select bild_url From erbjudande Where id=" & ID
bild_url = rs("bild_url")
sBild = bild_url 'Kan man inte få tag på bildnamnet på detta sätt?
'sBild = Request("Bild") Varför mellan ett par form-taggar?
filnamn="c:\test\" & sBild ' Vad ska här stå i Mitt fall? Bilderna ligger i samma mapp som filerna!!!!!!!!!!
Set fso = CreateObject("Scripting.FileSystemObject")
Set aktuell_bild = fso.GetFile(filnamn)
aktuell_bild.Delete
Conn.Execute "DELETE FROM erbjudande WHERE id =" & ID
Conn.Close
Set Conn = Nothing
Response.Redirect "visa_erbjudande.asp"
%>
Vad ska "filnamn" ha för platsvärde i mitt fall?
Edit:
Nu har jag testat med Server.MapPath men då fick jag bara att File not found och så pekar den på raden:
Set aktuell_bild = fso.GetFile(filnamn)
Koden nu:
<%
ID = Request.QueryString("ID")
If ID <> "" Then
Set Conn = Server.CreateObject("ADODB.Connection")
ConnString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("db/bilduppladdning.mdb")
Conn.Open ConnString
Set rs = Conn.Execute("Select bild_url From erbjudande Where id="& ID &"")
bild_url = rs("bild_url") ' Här får jag tag i bildnamnet
'sBild = Request("Bild") ' Varför mellan ett par form-taggar????
filnamn="Server.MapPath" & bild_url 'Vad ska här stå i Mitt fall? Bilderna ligger i samma mapp som filerna
Set fso = CreateObject("Scripting.FileSystemObject")
Set aktuell_bild = fso.GetFile(filnamn)
aktuell_bild.Delete
Conn.Execute "DELETE FROM erbjudande WHERE id =" & ID
Conn.Close
Set Conn = Nothing
'Response.Redirect "visa_erbjudande.asp"
End If
%>
Vad Är problemet?
Edit: JAG HAR FÅTT BILD/TEXT-BORTTAGNINGEN ATT FUNGERA!
Nu behöver jag bara göra så man inte kan lägga in samma bild mer än en gång, annars blir det tokigt...
som sagt, sakta men säkert :)
Micke
Sv:Ta bort bilder ur en mapp
Tänkte fråga om det är här man ändrar i vilken mapp man vill lägga filerna i?
SavePath = Server.MapPath(FilePath)
Om man t ex vill lägga en fil i mappen X så blir det:
SavePath = Server.MapPath/X(FilePath) eller...?
Är det några "problem" om man vill kolla vilken sorts fil som laddas upp?
Bara godkänna vissa sorters, t ex gif, jpg eller pdf-er.
Hur skulle man kunna skriva i såfall?
Mvh MickeSv: Ta bort bilder ur en mapp
<code>
<SavePath = Server.MapPath/X(FilePath) eller...?
SavePath = Server.MapPath("/minaBilder/X.gif")
</code>
...bör det vara.Sv:Ta bort bilder ur en mapp
som det är nu så lägger sig bilderna i samma mapp som asp-sidan.
Du har satt X-et som en bild, om jag förstått det rätt...
Vet Du hur man kan skriva i detta exempel, om man vill kolla vilken filtyp som är valt att laddas upp?
Mvh Micke