I guess it should be done with a httprequest, but I don't seem to get the headers right...

Code: Select all
Global upname.s
Global upnamekeep.s
Procedure.i GadgetElement(gadget, usejquery.b=#True)
Protected gadgetobject=GadgetID(gadget)
!return (v_gadgetobject && v_gadgetobject.div)? v_usejquery? $(v_gadgetobject.div):v_gadgetobject.div:null;
EndProcedure
If OpenWindow(0, 10,10,500,300 , "TEST")
TextGadget(3, 20, 20, 300, 80, "")
TextGadget(4,20,110,200,10,"")
element=GadgetElement(3,1)
EnableJS
$(v_element).html("<iframe id='upload_target' name='upload_target' src='' style='width:0px;height:0px;border:0px solid #ccc;'></iframe><form id='file_upload_form' method='post' name='myForm' action='http://192.168.0.121/cgi-bin/up.py' enctype='multipart/form-Data'>Select file : <input type='file' name='file' id='flupload'/><input value='Send File' type='submit' id='subby' ><button type='reset' id='file_reset' style='display:none'></form>");
$('#subby').hide();
DisableJS
!$(document).ready(function() {
; add click event to submit button
;
! $( "#subby" ).on( "click", function() {
!$('#subby').hide();
! });
! $( "#flupload" ).on( "click", function() {
SetGadgetText(4,"")
! });
! $('#file_upload_form').prop('target', 'upload_target');
! $("#flupload").change(function ()
! {
! var v_isize = ($("#flupload")[0].files[0].size );
! var v_upname = ($("#flupload")[0].files[0].name );
Debug isize
Debug upname
upnamekeep=upname
If FindString(LCase(upname),".jpg")=0
! $('#file_reset').trigger('click');
!$('#subby').hide();
SetGadgetText(4,"Bad file")
Else
!$('#subby').show();
EndIf
!$('#upload_target').load(function(){
iframehtml.s=""
! v_iframehtml=$('#upload_target').contents().find("body").html();
If FindString(iframehtml,"was uploaded successfully")
!$('#upload_target').contents().find('html').html("")
Debug iframehtml
SetGadgetText(4,"Upload OK for "+upnamekeep)
! $('#file_reset').trigger('click');
Else
If Len(iframehtml)<>0 And FindString(iframehtml,"was uploaded successfully")=0
Debug iframehtml
SetGadgetText(4,"Upload failed for "+upnamekeep)
EndIf
EndIf
!});
;}
! });
!});
EndIf
Code: Select all
#!/usr/bin/env python
import cgi, os
import cgitb; cgitb.enable()
try: # Windows needs stdio set for binary mode.
import msvcrt
msvcrt.setmode (0, os.O_BINARY) # stdin = 0
msvcrt.setmode (1, os.O_BINARY) # stdout = 1
except ImportError:
pass
form = cgi.FieldStorage()
# A nested FieldStorage instance holds the file
fileitem = form['file']
# Test if the file was uploaded
if fileitem.filename:
# strip leading path from file name to avoid directory traversal attacks
fn = os.path.basename(fileitem.filename)
open('/home/pi/files/' + fn, 'wb').write(fileitem.file.read())
message = 'The file "' + fn + '" was uploaded successfully'
else:
message = 'No file was uploaded'
print """\
Content-Type: text/html\n
<html><body>
<p>%s</p>
</body></html>
""" % (message,)
I'm afraid not.Paul wrote:4 Years later... can uploading a file to a server be done natively in Spider Basic ???
Code: Select all
<form action='https://127.0.0.1/cgi-bin/mydata.cgi' method='post' enctype='multipart/form-data'>
Subject<br>
<input type='text' name='subject'><br>
<input type='hidden' name='pass' value='test data'><br>
<input type='file' name='file1' id='file1'><br>
<input type='file' name='file2' id='file2'><br>
<br>
<input type='reset' value='Clear' name='clear'>
<input type='submit' value='Send' name='senddata'>
</form>