335 lines
12 KiB
Plaintext
335 lines
12 KiB
Plaintext
<%@ LANGUAGE = JavaScript %>
|
|
<% /*
|
|
$Revision$
|
|
$Id$
|
|
|
|
File: upploadform_save.asp
|
|
Description: Opvangscript van uploadform.asp
|
|
Parameters:
|
|
extfilter extensie filter
|
|
pkey ALG_RUIMTE_KEY of ...
|
|
pModule "ALG" of ...
|
|
pKenmerk_key ALG_KENMERK_KEY of ...
|
|
Context: Vanuit uploadform.asp
|
|
Note: Na submit sluiten we onzelf
|
|
Met TAMPER bescherming!
|
|
*/
|
|
|
|
if (Server.ScriptTimeout < 600) Server.ScriptTimeout = 600; // 10 minuten moet echt genoeg zijn
|
|
%>
|
|
|
|
<!-- #include file="../Shared/common.inc" -->
|
|
<!-- #include file="./flexfiles.inc" -->
|
|
<!-- #include file="../Shared/upload.inc" -->
|
|
<!-- #include file='../cad/cad_scan_dwf.inc' -->
|
|
<!-- #include file="../Shared/json2.js" -->
|
|
|
|
<%
|
|
protectQS.verify(); // tamper check
|
|
|
|
FCLTHeader.Requires({ plugins:["jQuery"]
|
|
});
|
|
|
|
var pKey = getQParamInt("key", -1);
|
|
var pNiveau = getQParamSafe("niveau", "");
|
|
var pModule = getQParamSafe("module");
|
|
var pKenmerk_key = getQParamInt("kenmerk_key", -1);
|
|
var pAlgLevel = getQParam("kenmerk_module", "");
|
|
|
|
var params = flexProps(pModule, pKey, String(pKenmerk_key), pNiveau, {alglevel: pAlgLevel});
|
|
|
|
if (params.extFilter)
|
|
{
|
|
// extFilter="pdf,tiff" of "pdf tiff" of "pdf;tiff"
|
|
var regFilter = params.extFilter;
|
|
regFilter = regFilter.replace(/( |,|;)/g,"|"); // Altijd | karakter
|
|
regFilter = ".*\\." + "(" + regFilter + ")$"; // er moet een punt voor en extensie is aan het einde
|
|
}
|
|
|
|
function jslog(str) // VB Vindt de twee underscores niet leuk
|
|
{
|
|
__Log(str)
|
|
}
|
|
%>
|
|
|
|
<html>
|
|
<head>
|
|
<% FCLTHeader.Generate();
|
|
|
|
__Log("Opslaan onder: " + params.AttachPath);
|
|
|
|
var found_files = [];
|
|
var found_fields = {};
|
|
|
|
function js_add_file(name, data, contenttype)
|
|
{
|
|
found_files.push({ name: name, data: data, contenttype: contenttype});
|
|
}
|
|
|
|
function js_add_field(name, data)
|
|
{
|
|
found_fields[name] = data;
|
|
}
|
|
|
|
var VB_result = VB_getfiles();
|
|
var result = { message: VB_result("message"),
|
|
safefilename: []
|
|
};
|
|
|
|
//__Log(found_fields);
|
|
//__Log(found_files);
|
|
protectRequest.validateToken(found_fields["__RequestVerificationToken"]);
|
|
|
|
|
|
// Obscuur: hier geen 'i' gebruiken omdat upload.inc/ getString die ook al gebruikt
|
|
// Je krijgt daar dan 'Illegal Assignment', ik verzin het niet
|
|
for (var j = 0; j < found_files.length; j++)
|
|
{
|
|
var finfo = found_files[j];
|
|
var safefilename = safe.filename(finfo.name);
|
|
result.safefilename.push(safefilename);
|
|
var BinaryStream = Server.CreateObject("ADODB.Stream");
|
|
BinaryStream.Type = 1; // adTypeBinary
|
|
BinaryStream.Open();
|
|
try
|
|
{
|
|
BinaryStream.Write(finfo.data);
|
|
// Save binary data To disk
|
|
__Log("Saving to: " + params.AttachPath + safefilename);
|
|
CreateFullPath(params.AttachPath);
|
|
BinaryStream.SaveToFile(params.AttachPath + safefilename, 2); // adSaveCreateOverWrite
|
|
}
|
|
catch(e)
|
|
{
|
|
HELP;
|
|
}
|
|
}
|
|
//__Log(result);
|
|
|
|
// Toevoegen bijlage/bestand tracken.
|
|
if (pKey > -1 && params.trackcode && (params.kenmerktype == "E" || params.kenmerktype == "F" || params.kenmerktype == "M"))
|
|
{
|
|
if (pModule == "BEZ")
|
|
{ // Voor afpraken heb ik de afspraak key nodig i.p.v. de bezoekerskey om de kenmerk omschrijving te bepalen.
|
|
var sql = "SELECT bez_afspraak_key"
|
|
+ " FROM bez_bezoekers"
|
|
+ " WHERE bez_bezoekers_key = " + pKey;
|
|
oRs = Oracle.Execute(sql);
|
|
var afspr_key = oRs("bez_afspraak_key").Value;
|
|
oRs.close();
|
|
pKey = String(afspr_key);
|
|
}
|
|
|
|
for (j=0; j<result.safefilename.length; j++)
|
|
{
|
|
ptxt = L("lcl_shared_attachment_add").format(params.kenmerkoms, result.safefilename[j]);
|
|
shared.trackaction(params.trackcode, pKey, ptxt);
|
|
}
|
|
}
|
|
|
|
if (!result.message && params.forcesingle)
|
|
{ // Er mag maar 1 bestand bestaan.
|
|
// Verwijder alle andere bestanden.
|
|
if (result.safefilename.length>1)
|
|
{
|
|
result.message += L("lcl_shared_upload_toomany");
|
|
}
|
|
else
|
|
{
|
|
var fso = Server.CreateObject("Scripting.FileSystemObject")
|
|
var f = fso.GetFolder(params.AttachPath);
|
|
for (fc = new Enumerator(f.files); !fc.atEnd(); fc.moveNext())
|
|
{
|
|
var vFileName = fc.item().Name;
|
|
if (vFileName != result.safefilename[0])
|
|
{
|
|
__Log("Autodelete: " + params.AttachPath + vFileName)
|
|
DeleteFile(params.AttachPath + vFileName);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
if (result.message && result.message != "")
|
|
{
|
|
result.message = L("lcl_shared_upload_error_start") + result.message + L("lcl_shared_upload_error_end");
|
|
}
|
|
else
|
|
{
|
|
checkWebconfig(params.AttachRootPath);
|
|
|
|
for (j=0; j<result.safefilename.length; j++)
|
|
{
|
|
result_safefilename = result.safefilename[j];
|
|
// Eerst Resize/crop
|
|
if (params.regexp && result_safefilename.match(/\.(png|jpg|jpeg)$/i))
|
|
{
|
|
var Format = params.regexp.match(/^([RrCc])(\d*)x(\d*)$/i); // P800x600
|
|
if (Format && Format.length == 4)
|
|
{
|
|
var oIMG = new ActiveXObject("SLNKDWF.ImageConvert");
|
|
try
|
|
{
|
|
oIMG.Open(params.AttachPath + result_safefilename);
|
|
}
|
|
catch(e)
|
|
{
|
|
result.message = L("lcl_shared_thumbnail_error") + e.description;
|
|
// Gewoon opruimen
|
|
DeleteFile(params.AttachPath + result_safefilename);
|
|
}
|
|
|
|
var RrCc = Format[1];
|
|
var h0 = h = parseInt(Format[2], 10);
|
|
var w0 = w = parseInt(Format[3], 10);
|
|
if (RrCc == "R" || RrCc == "r") // Dan niet croppen maar aspect ratio behouden
|
|
{
|
|
if (oIMG.Width * h > w * oIMG.Height)
|
|
h = oIMG.Height / oIMG.Width * w;
|
|
else
|
|
w = oIMG.Width / oIMG.Height * h;
|
|
}
|
|
|
|
if (oIMG.Height < h || oIMG.Width < w) // Zou er iets vergroot gaan worden.
|
|
{
|
|
if (RrCc == "R" || RrCc == "C") // Dan zijn we streng en eisen we minimale afmeting
|
|
{
|
|
result.message = L("lcl_shared_photo_small").format(h0, w0, oIMG.Height, oIMG.Width);
|
|
DeleteFile(params.AttachPath + result_safefilename);
|
|
}
|
|
else // Dan maar niet, we vergtoten niet.
|
|
{
|
|
h = oIMG.Height;
|
|
w = oIMG.Width;
|
|
}
|
|
}
|
|
if (!result.message && (oIMG.Height != h || oIMG.Width != w))
|
|
{
|
|
try {
|
|
__Log("Resize/Cropping from w=" + oIMG.Width + " h=" + oIMG.Height + " to w=" + w + " h=" + h);
|
|
oIMG.Width = w;
|
|
oIMG.Height = h;
|
|
oIMG.SaveAs(params.AttachPath + result_safefilename);
|
|
}
|
|
catch (e)
|
|
{
|
|
result.message = L("lcl_shared_thumbnail_error") + e.description;
|
|
// Gewoon opruimen
|
|
DeleteFile(params.AttachPath + result_safefilename);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
if (!result.message)
|
|
switch(pModule)
|
|
{
|
|
case "SML": // Thumb altijd
|
|
try {
|
|
maxThumbW = 60;
|
|
maxThumbH = 80;
|
|
if (oIMG.Width / oIMG.Height > maxThumbW / maxThumbH)
|
|
{
|
|
oIMG.Height = oIMG.Height / oIMG.Width * maxThumbW;
|
|
oIMG.Width = maxThumbW;
|
|
}
|
|
else
|
|
{
|
|
oIMG.Width = oIMG.Width / oIMG.Height * maxThumbH;
|
|
oIMG.Height = maxThumbH;
|
|
}
|
|
CreateFullPath(params.AttachPath + "thumb/");
|
|
oIMG.SaveAs(params.AttachPath + "thumb/" + result_safefilename);
|
|
}
|
|
catch (e)
|
|
{
|
|
result.message = L("lcl_shared_thumbnail_error") + e.description;
|
|
DeleteFile(params.AttachPath + "thumb/" + result_safefilename);
|
|
}
|
|
break;
|
|
case "FGII":
|
|
// Direct scannen nu, indien dwf bestand. Tekening kan vaker gebruikt worden.
|
|
var sql = "SELECT cad_tekening_key"
|
|
+ " FROM cad_tekening"
|
|
+ " WHERE cad_tekening_filenaam || '.dwf' = " + safe.quoted_sql(result_safefilename);
|
|
var oRs = Oracle.Execute(sql);
|
|
while (!oRs.eof)
|
|
{
|
|
var cad_tek_key = oRs("cad_tekening_key").value;
|
|
result.message = scanDWF(cad_tek_key, 1);
|
|
oRs.MoveNext();
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
%><script>
|
|
<% if (result.message) { %>
|
|
alert("<%=safe.jsstring(result.message)%>");
|
|
<% } %>
|
|
var JSONdata = "<%=safe.jsstring(JSON.stringify(result.safefilename))%>";
|
|
var filename_arr = eval('(' + JSONdata + ')');
|
|
|
|
parent.uploadDone(filename_arr); // Zoo fout....
|
|
</script>
|
|
<%
|
|
Response.End;
|
|
%>
|
|
<script language="VBScript" runat="Server">
|
|
Dim UploadRequest
|
|
Public Function iso8601Date(dt)
|
|
s = datepart("yyyy",dt)
|
|
s = s & RIGHT("0" & datepart("m",dt),2)
|
|
s = s & RIGHT("0" & datepart("d",dt),2)
|
|
s = s & "T"
|
|
s = s & RIGHT("0" & datepart("h",dt),2)
|
|
s = s & RIGHT("0" & datepart("n",dt),2)
|
|
s = s & RIGHT("0" & datepart("s",dt),2)
|
|
iso8601Date = s
|
|
End Function
|
|
|
|
' Vult via de (JavaScript) functie js_add_file de globale found_files
|
|
' Verder doen we echt zo veel mogelijk in JavaScript
|
|
Public Function VB_getfiles()
|
|
Dim myErr
|
|
Set result = Server.CreateObject("Scripting.Dictionary")
|
|
|
|
byteCount = Request.TotalBytes
|
|
if byteCount = 0 then Response.End
|
|
|
|
on error resume next
|
|
RequestBin = Request.BinaryRead(byteCount)
|
|
myErr = Err.Description
|
|
on error goto 0
|
|
If myErr <> "" Then
|
|
result.add "message", myErr
|
|
Set VB_getfiles = result
|
|
Exit Function
|
|
End If
|
|
|
|
Set UploadRequest = CreateObject("Scripting.Dictionary")
|
|
BuildUploadRequest RequestBin
|
|
|
|
' Vul via de (Javascipt) functie js_add_field de globale found_fields
|
|
' met de hidden form-fields uit de header
|
|
Dim ur_key, i, var_naam, var_waarde
|
|
ur_key = UploadRequest.Keys
|
|
for i = 0 To UploadRequest.Count -1
|
|
var_naam = ur_key(i)
|
|
if UploadRequest.Item(var_naam).Exists("ContentType") then
|
|
var_waarde = UploadRequest.Item(var_naam).Item("FileName")
|
|
' En dan nu nog de bestanden..
|
|
contentType = UploadRequest.Item(var_naam).Item("ContentType")
|
|
filepathname = UploadRequest.Item(var_naam).Item("FileName")
|
|
value = MultiByteToBinary(UploadRequest.Item(var_naam).Item("Value"))
|
|
js_add_file filepathname, value, contentType
|
|
else
|
|
var_waarde = UploadRequest.Item(var_naam).Item("Value")
|
|
end if
|
|
js_add_field var_naam, var_waarde
|
|
next
|
|
|
|
Set VB_getfiles = result
|
|
End Function
|
|
|
|
</script> |