Files
Facilitor/APPL/EXP/exp_export.asp
Jos Groot Lipman 424dbdb577 YAXX#88573 Export via interface bij lege data geen bestand aanmaken
svn path=/Website/trunk/; revision=70007
2025-08-14 13:03:06 +00:00

144 lines
4.4 KiB
Plaintext

<%@ LANGUAGE = JavaScript %>
<% /*
$Revision$
$Id$
File: exp_export.asp
Description: Export, resultaat direct downloaden
Parameters:
export_key Export key uit fac_export_app
compress Optional 0 of 1, overrules flag in fac_export_app
Context:
Note: De download limiet ligt meestal rond de 5MB
Daar kun je een beetje omheen werken door &compress=1 mee te geven
TODO: Er is nog geen interface om aanroep van dit bestand te regelen
*/ %>
<%
Server.ScriptTimeout = 6000; // Extra tijd
DOCTYPE_Disable = 1;
%>
<!-- #include file="../Shared/common.inc" -->
<script language="javascript" src="exp_shared.js" runat="server"></script>
<%
protectRequest.validateToken();
var export_key = getQParamInt("export_key"); // 24=HV_DUMP,25=CPUA
var params = getSettings(export_key);
user.checkAutorisation(params.functie_key);
params.custid = customerId;
params.compress = getFParamInt("compress", params.compress?1:0) == 1; // Je mag in de url overrulen
params.preview = getFParamInt("preview", 0) == 1; // dan geen _EXPORT_ achteraan aanroepen?
params.tempFolder = shared.tempFolder() + "/";
params.applrun = new Date();
params.fac_home = Server.MapPath(rooturl + "/") + "/";
params.customerId = customerId;
try
{
var streamObj = expCreateStream(export_key, params);
}
catch (e)
{
var msg = "Export key {0} failed: {1}".format(export_key, e.description);
__DoLog(e.description + "<br>" + msg);
Response.clear;
Response.contenttype = "text/html";
// De content-disposition krijgen we niet echt weg
Response.Write(msg);
Response.End;
}
if (!streamObj.streamData || streamObj.streamData.Size == 0)
shared.simpel_page(L("lcl_export_nodata"));
Response.clear;
streamObj.streamData.Type = 1; // verder als adTypeBinary
if (params.compress)
{
Response.contenttype = 'application/zip';
}
else
{
if (params.charset.toUpperCase() == 'UTF-8')
{
Session.Codepage = 65001;
Response.Charset = 'utf-8'; // Alleen voor de header var, we doen zo een binary write
}
Response.contenttype = "application/octet-stream";
}
Response.AddHeader("content-disposition", "attachment; filename= \"" + streamObj.exportFile + "\"");
try
{
Response.BinaryWrite(streamObj.streamData.Read());
}
catch (e)
{ // Meestal te groot
var msg = L("lcl_export_oversized").format(params.code, export_key, streamObj.streamData.Size); // S("maxdownloadsize")
__DoLog(e.description + "<br>" + msg);
Response.clear;
Response.contenttype = "text/html";
// De content-disposition krijgen we niet echt weg
Response.Write(msg);
}
// Komen uit wsf_shared.js
function Hexify(p_path)
{
var oStream = new ActiveXObject("ADODB.Stream");
oStream.charset = "Windows-1252";
oStream.Open();
oStream.Type = 2; // adTypeText
oZIP = new ActiveXObject("SLNKDWF.Zip");
oZIP.FileToHexStream(p_path, oStream);
oStream.Position = 0;
ReadBytes = 131072; // optimaal volgens http://support.microsoft.com/kb/280067
var result = "";
while (!oStream.EOS)
{
result = result + oStream.ReadText(ReadBytes);
}
return result;
}
function Base64fy(p_filename)
{
var fso = new ActiveXObject("Scripting.FileSystemObject");
var base64="";
if (fso.FileExists(p_filename))
{
var bytes = ReadBinaryFile(p_filename);
var base64 = encodeBase64(bytes);
}
return base64;
}
function ReadBinaryFile (p_filename)
{
var oStream = new ActiveXObject("ADODB.Stream");
oStream.Open();
oStream.Type = 1; // adTypeBinary
oStream.LoadFromFile(p_filename);
return oStream.Read;
}
function encodeBase64(p_bytes){
var l_xml=new ActiveXObject("Msxml2.DOMDocument.6.0");
// Create temporary node with Base64 data type
var xml_element = l_xml.createElement("tmp");
xml_element.dataType = "bin.base64";
// Set bytes, get encoded String
xml_element.nodeTypedValue = p_bytes
var encodeBase64 = xml_element.text
return encodeBase64;
}
%>
<% ASPPAGE_END(); %>