Volledige versie bekijken : Juiste path voor <CFFILE ACTION>
donboe
%Europe/Berlin %574 %2006, 13:47
Waar vind ik het juiste path voor een <CFFILE ACTION> Ik weet dat het er op mijn eigen server als volgt uitziet:
/home/httpd/vhosts/websitenaam.com/httpdocs/foldernaam
Maar ik werk nu op een andere server en weet niet wat het juiste path is?
Iemand enig idee hoe ik hier achter kom?
Alvast bedankt
brossiekoppie
%Europe/Berlin %675 %2006, 16:12
als je server ook php ondersteunt kan je het zien door dit uit te voeren ;)
<?php
a
b
c
?>
TheDutch
%Europe/Berlin %680 %2006, 16:19
Met <cfdump var="#CGI#"> zie je alle CGI variable en dus ook het pad (CGI.PATH_TRANSLATED) naar jouw htdocs :).
Ea.Z
%Europe/Berlin %723 %2006, 17:22
waarom geen #expandPath()# ?;)
Of mis ik iets?:p
TheDutch
%Europe/Berlin %738 %2006, 17:43
Heel goed opgemerkt Eazy! Ik was me te veel aan het focussen op de vraag zelf, maar inderdaad om de taak uit te voeren is expandPath() (http://livedocs.macromedia.com/coldfusion/6.1/htmldocs/functi78.htm) veel beter :).
Ter info: expandPath() vult het relatieve pad dat je als argument opgeeft aan tot het volledige absolute pad. expandPath("images/image1.jpg") is bijvoorbeeld "c:\inetpub\htdocs\images\image1.jpg".
donboe
%Europe/Berlin %359 %2006, 08:37
Heel goed opgemerkt Eazy! Ik was me te veel aan het focussen op de vraag zelf, maar inderdaad om de taak uit te voeren is expandPath() (http://livedocs.macromedia.com/coldfusion/6.1/htmldocs/functi78.htm) veel beter :).
Ter info: expandPath() vult het relatieve pad dat je als argument opgeeft aan tot het volledige absolute pad. expandPath("images/image1.jpg") is bijvoorbeeld "c:\inetpub\htdocs\images\image1.jpg".Bedankt voor alle input :) maar het is me nog niet helemaal duidelijk. Begrijp ilk het goed dat waneer ik een foto wil uploden naar een folder op de server "fotos" genaamd dat ik de Destination in de <CFFILE ACTION> als volgt kan opgeven: DESTINATION="expandPath("fotos/") "
TheDutch
%Europe/Berlin %414 %2006, 09:57
expandPath() begint waar jij op dat moment zit met je script. Bijvoorbeeld:
http://www.domain.com/books/script.cfm
expandPath("fotos/") zal hier teruggeven: c:\inetpub\htdocs\books\fotos\
http://www.domain.com/script.cfm
expandPath("fotos/") zal hier teruggeven: c:\inetpub\htdocs\fotos\
Er is echter een uitzondering! Wanneer je een slash ervoor zet dan begint het altijd bij de root. Bijvoorbeeld:
http://www.domain.com/books/script.cfm
expandPath("/fotos/") zal hier teruggeven: c:\inetpub\htdocs\fotos\
http://www.domain.com/script.cfm
expandPath("/fotos/") zal hier teruggeven: c:\inetpub\htdocs\fotos\
Het is maar net hoe je het wilt gebruiken en wat in bepaalde situaties de voorkeur heeft. In jouw geval denk ik dat de laatste optie het beste is :)
donboe
%Europe/Berlin %429 %2006, 10:18
expandPath() begint waar jij op dat moment zit met je script. Bijvoorbeeld:
http://www.domain.com/books/script.cfm
expandPath("fotos/") zal hier teruggeven: c:\inetpub\htdocs\books\fotos\
http://www.domain.com/script.cfm
expandPath("fotos/") zal hier teruggeven: c:\inetpub\htdocs\fotos\
Er is echter een uitzondering! Wanneer je een slash ervoor zet dan begint het altijd bij de root. Bijvoorbeeld:
http://www.domain.com/books/script.cfm
expandPath("/fotos/") zal hier teruggeven: c:\inetpub\htdocs\fotos\
http://www.domain.com/script.cfm
expandPath("/fotos/") zal hier teruggeven: c:\inetpub\htdocs\fotos\
Het is maar net hoe je het wilt gebruiken en wat in bepaalde situaties de voorkeur heeft. In jouw geval denk ik dat de laatste optie het beste is :)
Dank je TheDutch ik ga het meteen proberen. Laatste vraagje is de syntax zoals in mijn voorgaande post de juiste?
DESTINATION="expandPath("/fotos/") "
TheDutch
%Europe/Berlin %520 %2006, 12:29
Nee :)
DESTINATION="#expandPath('/fotos/') #"
donboe
%Europe/Berlin %533 %2006, 12:47
Nee :)
DESTINATION="#expandPath('/fotos/') #"Hi The Dutch! Het werkt slechts gedeeltelijk :( I ga foutloos door het gehele process voor het uploaden! In het onderste gedeelte heb ik een CFOUTPUT die d.m.v.thumbnails aangeeft welke photos er geupload zijn:
<cfoutput>
<tr>
<td> <img src="../photos/#rsPhotos.photoName#" border="0">
</td>
</tr>
</cfoutput>
Zoals gezegt i ga foutloos door het upload process alleen word er geen thumbnail getoond maar kleine witte blokjes met een rood kruis. De properties geven wel het juiste path weer:
http://www.a20villarentals.com/photos/apartment_00401.jpg maar hij toont de thumbnail dus niet en ook in de server is niets geupload toen ik de folder photos opende.
En het gekke is locaal werkt het prime nu
Enig idee?
Ea.Z
%Europe/Berlin %542 %2006, 13:00
het lijkt me niet logisch...
komen je gegevens ivm de foto's in een db te staan, of query je gewoon je folder 'photos' met cfdirectory?
Als je dat met cfdirectory doet versta ik er niets meer van...
Als je je gegevens van je foto gegevens in een db zet zou ik me de vraag stellen:
doe je je insert query na de upload, of ervoor?
(indien je het ervoor doet zou ik zeggen kijk eens of je firewall de upload niet blokkeert)
en kijk ook of de CFserver deze directory niet als temporary aanziet (dus alle inhoud verwijderen nadat de pagina is verwerkt)
donboe
%Europe/Berlin %549 %2006, 13:11
het lijkt me niet logisch...
komen je gegevens ivm de foto's in een db te staan, of query je gewoon je folder 'photos' met cfdirectory?
Als je dat met cfdirectory doet versta ik er niets meer van...
Als je je gegevens van je foto gegevens in een db zet zou ik me de vraag stellen:
doe je je insert query na de upload, of ervoor?
(indien je het ervoor doet zou ik zeggen kijk eens of je firewall de upload niet blokkeert)
en kijk ook of de CFserver deze directory niet als temporary aanziet (dus alle inhoud verwijderen nadat de pagina is verwerkt)De insert query komt na de upload 8~ Is dat goed of juist fout? Wat betreft dat temporary directory! Hoe vind ik uit of the server de directory als temporary aanziet?
Alvast bedankt
TheDutch
%Europe/Berlin %565 %2006, 13:34
Laat anders eens je code zien :).
donboe
%Europe/Berlin %588 %2006, 14:07
Laat anders eens je code zien :).Hier is de complete CF
<cfif IsDefined('URL.home')>
<cfset session.homephoto = URL.homeID>
<cfelse>
<cfquery name="rsHome" datasource="mysqlcf_polisproperties">
SELECT homeID FROM rHomes
</cfquery>
<cfset session.homephoto = rsHome.homeID>
</cfif>
<cfparam name="rsThumbnail__varPhoto" default="#session.homephoto#">
<cfquery name="rsThumbnail" datasource="mysqlcf_polisproperties">
SELECT * FROM rPhotos WHERE homeID=#rsThumbnail__varPhoto# AND thumbnail=1
</cfquery>
<cfparam name="rsPhotodelete__varPhoto" default="#session.homephoto#">
<cfquery name="rsPhotodelete" datasource="mysqlcf_polisproperties">
SELECT * FROM rPhotos WHERE homeID=#rsPhotodelete__varPhoto# AND thumbnail=0
</cfquery>
<cfscript>
rsPhotodelete_NumRows = 0;
rsPhotodelete_Index = 1;
HLooper1_NumRows = -2;
rsPhotodelete_NumRows = rsPhotodelete_NumRows + HLooper1_NumRows;
</cfscript>
<cfparam name="session.homephoto" default="0">
<cfparam name="rsPhotos__varPhoto" default="#session.homephoto#">
<cfquery name="rsPhotos" datasource="mysqlcf_polisproperties">
SELECT * FROM rPhotos WHERE homeID=#rsPhotos__varPhoto# AND thumbnail=0
</cfquery>
<CFPARAM name="start" default="1">
<CFPARAM name="disp" default="1">
<CFSET end=Start + disp>
<CFIF start + disp GREATER THAN rsPhotos.RecordCount>
<CFSET end=999>
<CFELSE>
<CFSET end=disp>
</CFIF>
<!--- als een thumbnail wordt toegevoegd --->
<CFIF isdefined ("FORM.txt_addTN")>
<CFIF VAL(CGI.CONTENT_LENGTH) GT 30000>
<cfset Note="Your File is too Large! (#VAL(CGI.CONTENT_LENGTH/1000)# KB)">
<cfelseif form.UploadTN EQ ''>
<cfset Note="You did not select a photo.">
<CFELSE>
<CFFILE
ACTION="Upload"
FILEFIELD="UploadTN"
DESTINATION="#expandPath('/thumbnails/') #"
NAMECONFLICT="makeunique"
ACCEPT="image/*">
<cfquery name="rsInsertTN" datasource="mysqlcf_polisproperties">
INSERT INTO rPhotos (homeID, photoName, thumbnail) VALUES (#session.homephoto#,"#cffile.ServerFileName#.#cffile.ServerFileExt#",1)
</cfquery>
<cflocation addtoken="no" url="add_photos.cfm?home=#session.homephoto#">
<CFABORT>
</CFIF>
</CFIF>
<!--- als een foto wordt toegevoegd --->
<CFIF isdefined ("FORM.txt_add")>
<CFIF VAL(CGI.CONTENT_LENGTH) GT 80000>
<cfset Note="Your File is too Large! (#VAL(CGI.CONTENT_LENGTH/1000)# KB)">
<cfelseif form.UploadMe EQ ''>
<cfset Note="You did not select a photo.">
<CFELSE>
<CFFILE
ACTION="Upload"
FILEFIELD="UploadMe"
DESTINATION="#expandPath('/photos/') #"
NAMECONFLICT="makeunique"
ACCEPT="image/*">
<cfquery name="rsUpdate" datasource="mysqlcf_polisproperties">
INSERT INTO rPhotos (homeID, photoName, description) VALUES (#session.homephoto#,"#cffile.ServerFileName#.#cffile.ServerFileExt#","#form.description#")
</cfquery>
<cflocation addtoken="no" url="add_photos.cfm?homeID=#session.homephoto#">
<CFABORT>
</CFIF>
</CFIF>
<!--- als op de knop delete selected photo(s) is gedrukt --->
<cfif IsDefined('form.txt_delete')>
<cfloop index="i" list="#FORM.FieldNames#" DELIMITERS="," >
<cfif LEFT(i, 4) IS "DEL_" >
<CFSET selectphotoID = RemoveChars(i, 1, 4)>
<CFSET selectphotoID = #Evaluate(selectphotoID)#>
</cfif>
<!--- Delete Query for selected IDs --->
<cfif IsDefined('selectphotoID')>
<!--- check of de photo echt bestaat --->
<cfquery name="rsPropmap" datasource="mysqlcf_polisproperties">
SELECT photoName FROM rPhotos WHERE photoID = #selectphotoID#
</CFQUERY>
<cfif rsPropmap.RecordCount GT 0>
<CFFILE ACTION="Delete"
FILE="#expandPath('/photos/') #">
<cfquery name="rsDelete" datasource="mysqlcf_polisproperties">
DELETE FROM rPhotos WHERE photoID = #selectphotoID#
</CFQUERY>
</cfif>
</cfif>
</cfloop>
<cflocation URL="add_photos.cfm?homeID=#session.homephoto#" ADDTOKEN="No">
</cfif>
<!--- als op de knop delete thumbnail is gedrukt --->
<cfif IsDefined('form.txt_deleteTN')>
<cfquery name="rsCheckTN" datasource="mysqlcf_polisproperties">
SELECT photoName FROM rPhotos WHERE photoID = #form.txt_deleteTN# AND thumbnail=1
</CFQUERY>
<cfif rsCheckTN.RecordCount GT 0>
<CFFILE ACTION="Delete"
FILE="#expandPath('/thumbnails/') #">
<cfquery name="rsDelete" datasource="mysqlcf_polisproperties">
DELETE FROM rPhotos WHERE photoID = #form.txt_deleteTN#
</CFQUERY>
</cfif>
<cflocation URL="add_photos.cfm?homeID=#session.homephoto#" ADDTOKEN="No">
Enige uitleg:
Ik insert gegevens voor een huis in de database in add_homes.cfm De CFLOCATION in add_homes.cfm verwijst naar add_photos.cfm (de pagina waar bovengenoemde code betrekking op heeft) Op deze pagina is het de bedoeling dat er 1 thumbnail word geupload en zoveel fotos als gewenst. (totdat de button finished word ingedrukt) waarna er naar een detail pagina wordt gegaan waar de coplete informaie en fotos (als het goed is) zichtbaar zijn.
Verder heb ik beneden aan de pagina de volgende code:
<cfif rsPhotos.RecordCount GT 0>
<form name="fm_delete" method="post" action="">
<table width="700" border="0" cellspacing="0" cellpadding="0" align="center" class="maintable">
<tr>
<td class="search_titles">YOUR CURRENT PHOTOS OF THIS PROPERTY:</td>
</tr>
<tr>
<td>
<table class="maintable">
<cfset endrw=rsPhotodelete_Index-1>
<cfset HLooper1_numberColumns=3>
<cfset numrows=-1>
<cfloop condition="numrows is not 0 and endrw less than rsPhotodelete.RecordCount">
<cfset startrw=endrw + 1>
<cfset endrw=endrw + HLooper1_numberColumns>
<tr align="center" valign="top">
<cfloop query="rsPhotodelete" startrow="#startrw#" endrow="#endrw#">
<cfoutput>
<td class="bg_blank"> #rsPhotodelete.description#<br>
<br>
<img src="../photos/#rsPhotodelete.photoName#" width="100" height="75" border="0"><br>
delete
<input type="checkbox" name="DEL_#photoID#" value="YES">
</td>
</cfoutput>
</cfloop>
</tr>
<cfset numrows = numrows - 1>
</cfloop>
</table>
</td>
</tr>
<tr>
<td>TO DELETE PHOTOS, CHECK THE BOX OF THE PHOTO AND PRESS:
<input type="submit" name="Submit23" value="DELETE" class="form_field">
<input name="txt_delete" type="hidden" value="Y">
</td>
</tr>
</table>
</form>
</cfif>
<cfif rsThumbnail.RecordCount GT 0>
<form name="fm_deleteTN" method="post" action="">
<table width="700" border="0" cellspacing="0" cellpadding="0" class="maintable" align="center">
<tr>
<td class="search_titles">YOUR THUMBNAIL OF THIS PROPERTY:</td>
</tr>
<cfoutput>
<tr>
<td> <img src="../thumbnails/#rsThumbnail.photoName#" border="0">
</td>
</tr>
<tr>
<td>TO DELETE THUMBNAIL, PRESS:
<input type="submit" name="Submit24" value="DELETE" class="form_field">
<input name="txt_deleteTN" type="hidden" value="#rsThumbnail.photoID#">
</td>
</tr>
</cfoutput>
</table>
</form>Welke er voor zorgt dat de geuploade foto's en thumbnaail onderaan worden weergegeven!
Ik hoop dat het enigzinds duidelijkis en dat jij/jullie mij enigzinds op weg kunnen helpen.
Alvast bedankt
TheDutch
%Europe/Berlin %616 %2006, 14:47
Zet de cflocations eens uit om te kijken of het een error geeft of niet :).
TheDutch
%Europe/Berlin %630 %2006, 15:07
-----------------------------
donboe
%Europe/Berlin %496 %2006, 11:54
Toen ik de locations uitzette werkte het inderdaad 8~ Waar zou dat door kunnen komen?
donboe
%Europe/Berlin %630 %2006, 15:07
Okay hier is de huidige status. De thumbnail wordt nu inderdaad ge-upload naar de folder thumbnails maar de foto's daar gebeurt niets mee. Is er iemand die een fout ziet in mijn script/ Dit is azoals het nu is:<cfif IsDefined('URL.home')>
<cfset session.homephoto = URL.home>
<cfelse>
<cfset newhomedate = DateFormat(session.newhome,"yyyy-mm-dd")&" "&TimeFormat(session.newhome,"HH:mm:ss")>
<cfparam name="newhomedate" default="%">
<cfparam name="rsHome__varAdded" default="#newhomedate#">
<cfquery name="rsHome" datasource="mysqlcf_polisproperties">
SELECT homeID FROM rHomes
</cfquery>
<cfset session.homephoto = rsHome.homeID>
</cfif>
<cfparam name="rsThumbnail__varPhoto" default="#session.homephoto#">
<cfquery name="rsThumbnail" datasource="mysqlcf_polisproperties">
SELECT * FROM rPhotos WHERE homeID=#rsThumbnail__varPhoto# AND thumbnail=1
</cfquery>
<cfparam name="rsPhotodelete__varPhoto" default="#session.homephoto#">
<cfquery name="rsPhotodelete" datasource="mysqlcf_polisproperties">
SELECT * FROM rPhotos WHERE homeID=#rsPhotodelete__varPhoto# AND thumbnail=0
</cfquery>
<cfscript>
rsPhotodelete_NumRows = 0;
rsPhotodelete_Index = 1;
HLooper1_NumRows = -2;
rsPhotodelete_NumRows = rsPhotodelete_NumRows + HLooper1_NumRows;
</cfscript>
<cfparam name="session.homephoto" default="0">
<cfparam name="rsPhotos__varPhoto" default="#session.homephoto#">
<cfquery name="rsPhotos" datasource="mysqlcf_polisproperties">
SELECT * FROM rPhotos WHERE homeID=#rsPhotos__varPhoto# AND thumbnail=0
</cfquery>
<!--- Start displaying with record 1 if not specified via url --->
<CFPARAM name="start" default="1">
<!--- Number of records to display on a page --->
<CFPARAM name="disp" default="1">
<CFSET end=Start + disp>
<CFIF start + disp GREATER THAN rsPhotos.RecordCount>
<CFSET end=999>
<CFELSE>
<CFSET end=disp>
</CFIF>
<!--- als een thumbnail wordt toegevoegd --->
<CFIF isdefined ("FORM.txt_addTN")>
<CFIF VAL(CGI.CONTENT_LENGTH) GT 30000>
<cfset Note="Your File is too Large! (#VAL(CGI.CONTENT_LENGTH/1000)# KB)">
<cfelseif form.UploadTN EQ ''>
<cfset Note="You did not select a photo.">
<CFELSE>
<CFFILE
ACTION="Upload"
FILEFIELD="UploadTN"
DESTINATION="#expandPath('/thumbnails/') #"
NAMECONFLICT="makeunique"
ACCEPT="image/*">
<cfquery name="rsInsertTN" datasource="mysqlcf_polisproperties">
INSERT INTO rPhotos (homeID, photoName, thumbnail) VALUES (#session.homephoto#,"#cffile.ServerFileName#.#cffile.ServerFileExt#",1)
</cfquery>
<cflocation addtoken="no" url="add_photos.cfm?home=#session.homephoto#">
<CFABORT>
</CFIF>
</CFIF>
<!--- als een foto wordt toegevoegd --->
<CFIF isdefined ("FORM.txt_add")>
<CFIF VAL(CGI.CONTENT_LENGTH) GT 80000>
<cfset Note="Your File is too Large! (#VAL(CGI.CONTENT_LENGTH/1000)# KB)">
<cfelseif form.UploadMe EQ ''>
<cfset Note="You did not select a photo.">
<CFELSE>
<CFFILE
ACTION="Upload"
FILEFIELD="UploadMe"
DESTINATION="#expandPath('/photos/') #"
NAMECONFLICT="makeunique"
ACCEPT="image/*">
<cfquery name="rsUpdate" datasource="mysqlcf_polisproperties">
INSERT INTO rPhotos (homeID, photoName, description) VALUES (#session.homephoto#,"#cffile.ServerFileName#.#cffile.ServerFileExt#","#form.description#")
</cfquery>
<cflocation addtoken="no" url="add_photos.cfm?home=#session.homephoto#">
<CFABORT>
</CFIF>
</CFIF>
<!--- als op de knop delete selected photo(s) is gedrukt --->
<cfif IsDefined('form.txt_delete')>
<cfloop index="i" list="#FORM.FieldNames#" DELIMITERS="," >
<cfif LEFT(i, 4) IS "DEL_" >
<CFSET selectphotoID = RemoveChars(i, 1, 4)>
<CFSET selectphotoID = #Evaluate(selectphotoID)#>
</cfif>
<!--- Delete Query for selected IDs --->
<cfif IsDefined('selectphotoID')>
<!--- check of de photo echt bestaat --->
<cfquery name="rsPropmap" datasource="mysqlcf_polisproperties">
SELECT photoName FROM rPhotos WHERE photoID = #selectphotoID#
</CFQUERY>
<cfif rsPropmap.RecordCount GT 0>
<CFFILE ACTION="Delete"
FILE="#expandPath('/photos/#rsPropmap.photoName#')#">
<cfquery name="rsDelete" datasource="mysqlcf_polisproperties">
DELETE FROM rPhotos WHERE photoID = #selectphotoID#
</CFQUERY>
</cfif>
</cfif>
</cfloop>
<cflocation URL="add_photos.cfm?home=#session.homephoto#" ADDTOKEN="No">
</cfif>
<!--- als op de knop delete thumbnail is gedrukt --->
<cfif IsDefined('form.txt_deleteTN')>
<cfquery name="rsCheckTN" datasource="mysqlcf_polisproperties">
SELECT photoName FROM rPhotos WHERE photoID = #form.txt_deleteTN# AND thumbnail=1
</CFQUERY>
<cfif rsCheckTN.RecordCount GT 0>
<CFFILE ACTION="Delete"
FILE="#expandPath('/thumbnails/#rsCheckTN.photoName#')#">
<cfquery name="rsDelete" datasource="mysqlcf_polisproperties">
DELETE FROM rPhotos WHERE photoID = #form.txt_deleteTN#
</CFQUERY>
</cfif>
<cflocation URL="add_photos.cfm?home=#session.homephoto#" ADDTOKEN="No">
</cfif>
TheDutch
%Europe/Berlin %764 %2006, 18:21
Bekijk eens dmv. outputs en aborts waar en tot hoe ver het script werkelijk komt. Dit is onderdeel van het debuggen van een applicaties/site. Leer dit! :).
vBulletin® v3.8.1, Copyright ©2000-2012, Jelsoft Enterprises Ltd.