New call-to-action
Results 1 to 7 of 7

Thread: Anyone have Xbasic code for zipping files before download?

  1. #1
    "Certified" Alphaholic kingcarol's Avatar
    Real Name
    Carol King
    Join Date
    Jun 2010
    Posts
    1,537

    Default Anyone have Xbasic code for zipping files before download?

    It turns out that (per Alpha) the Xbasic server cannot handle a download of a file that is over 100MB. I am using Xbasic to copy a file into a folder and then open a page for the user to right click a link to select Save Target As and download the file. There is not a good message that lets the user know the file is too large. Either the Save As becomes unavailable or it opens and replaces the period before the extension with an underscore. I would like to avoid this by zipping the file first and then have the user download the zipped file.
    Carol King
    Developer of Custom Homebuilders' Solutions (CHS)
    http://www.CHSBuilderSoftware.com

  2. #2
    Member
    Real Name
    Jeff
    Join Date
    May 2008
    Posts
    149

    Default Re: Anyone have Xbasic code for zipping files before download?

    You might check out the File.Zip method and see if it can be integrated in your existing XBasic

  3. #3
    Member
    Real Name
    Dave
    Join Date
    Jul 2012
    Location
    Southern California
    Posts
    621

    Default Re: Anyone have Xbasic code for zipping files before download?

    I have used File.Zip() before and it is very straight forward. I did have an issue though that cost me a lot of time. I found that File.Zip() would fail on certain files. I discovered that it will not zip files marked with the hidden "T" attribute. This attribute indicates to Windows that the file is temporary and expected to be deleted. You can use "attrib" from the command prompt to display or modify the file attributes. I never learned exactly how or when this attribute was set in the first place so I added the following code to unset it before calling the File.Zip() method.

    Code:
    dim attributes as c
    	
    attributes = file.attributes_get(filename)
    if "T" $ attributes = .t.
    	file.attributes_set(filename,"-T")     ' Remove the "T" file attribute
    end if

  4. #4
    "Certified" Alphaholic kingcarol's Avatar
    Real Name
    Carol King
    Join Date
    Jun 2010
    Posts
    1,537

    Default Re: Anyone have Xbasic code for zipping files before download?

    Thank you, Jeff. I have just experimented with File.Zip and I think it's going to be exactly what I need! (I must have searched with wrong words in Alphapedia..)

    And, Dave, it's so good to be forewarned about time eating possibilities. One of things I love about this forum. I think I will include your "T" attribute code to be safe also. Thanks muchly!
    Carol King
    Developer of Custom Homebuilders' Solutions (CHS)
    http://www.CHSBuilderSoftware.com

  5. #5
    Member -Jinx-'s Avatar
    Real Name
    Jinx
    Join Date
    Jul 2012
    Location
    Wisconsin
    Posts
    963

    Default Re: Anyone have Xbasic code for zipping files before download?

    I'm using the zip_files method:
    zip_files(zipname,files,.f.)
    That's working great for me. Not sure what the difference is between this one and the one outlined above. Maybe zip_files is only for multiple files?

  6. #6
    "Certified" Alphaholic kingcarol's Avatar
    Real Name
    Carol King
    Join Date
    Jun 2010
    Posts
    1,537

    Default Re: Anyone have Xbasic code for zipping files before download?

    OK, I have accomplished my mission of zipping a file and then downloading it. I thought I'd share the code in case anyone else stumbles across this trying to do the same thing. I was using a folder on the server C drive named ClientDownloads to temporarily store a copy of the original file (which is an Access mdb file) AND then a zipped file is created in that ClientDownloads folder. Then I used the newish Alpha functions for putting that file into an Alpha session type folder and to create a url for users to click on the page that opens when all is done.

    This function is called by clicking a button on a grid record that has a field for the file name.

    Code:
    function DownloadDataFile as c (e as p)
    
    dim FileToCopy as c
    FileToCopy = "C:"+"\\" + "folderName" + "\\" + e._currentRowDataNew.FILE_NAME
    
    dim pathToClientDownloads as c
    pathToClientDownloads = "C:"+"\\"+"ClientDownloads"+"\\"
    
    dim FileToZip as c
    FileToZip = pathToClientDownloads + e._currentRowDataNew.FILE_NAME
    
    dim ZippedFilePath as c
    ZippedFilePath = pathToClientDownloads + strtran(e._currentRowDataNew.FILE_NAME,".mdb",".ZIP")
    
    dim vDateTime as c 'to be used as part of the download file name
    vDateTime = time("MMddyy_hms") 'year month day _ hour min second (used Ctrl down key in function to get the help)
    
    dim DownloadFileName as c
    DownloadFileName = vDateTime+"_"+strtran(e._currentRowDataNew.FILE_NAME,".mdb",".ZIP")
    
    'Check to see if file to copy exists. If it does, use that file
    If file.exists(FileToCopy) then
    
    	'FIRST check to see if the data file is already in the ClientDownloads folder and remove it if it is
    	if file.exists(FileToZip) then
           		file.remove(FileToZip)
    	end if
    	
    	'NEXT check to see if a zipped file for the data file is already in the ClientDownloads folder and remove it if it is
    	if file.exists(ZippedFilePath) then
           		file.remove(ZippedFilePath)
    	end if
    
    	'copy the data file into the ClientDownloads folder for the client
    	file.copy(FileToCopy,FileToZip)
    	
    	'zip up the file that was copied to the ClientDownloads folder
    	FILE.ZIP(ZippedFilePath,FileToZip)
    	
    	'the following is an Alpha function that will store the zipped file in an A5SessionFile temp folder created by Alpha
    	Session.SaveFileToSessionFile(ZippedFilePath,DownloadFileName)
    	
    	'Set a session variable for the url string to be used by the DataFileDownloadView.a5w page that is opened by button 5.
    	'The Session.FormatFileDataURL Alpha function will create the url to use.
    	session.downloadString = Session.FormatFileDataURL(DownloadFileName)
    		
    	'now delete the data file (mdb file) from the ClientDownloads folder so that we don't take up too much space on server
    	if file.exists(FileToZip) then
           		file.remove(FileToZip)
    	end if
    	
    	'button 5 opens a page includes the session.downloadString as a url with instructions to right click and use Save Target As
    	DownloadDataFile = "var ele = $('{grid.componentName}.V.R{grid.rowNumber}._UNBOUND_BUTTON_5');ele.click();"  
    	exit function
    	
    end if
    
    'If we get to here, the file was not found so give message to user
    DownloadDataFile = "alert('The data file was not found.  Please contact CHS for assistance.');"
    
    end function
    Carol King
    Developer of Custom Homebuilders' Solutions (CHS)
    http://www.CHSBuilderSoftware.com

  7. #7
    Member
    Real Name
    Tom Williams
    Join Date
    Oct 2007
    Posts
    426

    Default Re: Anyone have Xbasic code for zipping files before download?

    Carol,

    I recently read with excitement your solution for Zipping files using A5. I hope to try your submitted sample code soon.

    I did however wonder if you've gone to the next step of being able to programatically add a password/encryption to the
    uploaded file. Would be appreciated for any help in this area.

    Tom W.

Similar Threads

  1. Download Sample Files from Videos
    By Larsman in forum Application Server Version 11 - Web/Browser Applications
    Replies: 3
    Last Post: 08-26-2012, 12:16 AM
  2. How to convert .java class code to AlphaFive Xbasic code?
    By Suvarchala in forum Application Server Version 11 - Web/Browser Applications
    Replies: 4
    Last Post: 01-04-2012, 12:07 AM
  3. Why inline-javascript code fires before ajax callback UDF xbasic code?
    By eritovs in forum Application Server Version 10 - Web/Browser Applications
    Replies: 6
    Last Post: 10-29-2010, 07:46 AM
  4. Xbasic and zipping files
    By kgilroy in forum Alpha Five Version 7
    Replies: 3
    Last Post: 09-14-2006, 04:49 AM
  5. Xbasic And Zipping Files
    By kgilroy in forum Alpha Five Version 5
    Replies: 6
    Last Post: 04-08-2003, 02:20 PM

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •