Ecco la mia soluzione funzionante basata su weblion<div><br></div><div><div># Dump this in a Custom Script Adapter.</div><div><br></div><div># Available parameters:</div><div>#  fields  = HTTP request form fields as key value pairs</div>
<div>#  request = The current HTTP request. </div><div>#            Access fields by request.form[&quot;myfieldname&quot;]</div><div>#  ploneformgen = PloneFormGen object</div><div># </div><div># Return value is not processed -- unless you</div>
<div># return a dictionary with contents. That&#39;s regarded</div><div># as an error and will stop processing of actions</div><div># and return the user to the form. Error dictionaries</div><div># should be of the form {&#39;field_id&#39;:&#39;Error message&#39;}</div>
<div><br></div><div># Do some setup:</div><div>upload_folder = context.circolari[&#39;allegati&#39;]</div><div><br></div><div>## Save the answer to the question of ID &quot;thingy&quot;:</div><div>uploaded_file = fields[&#39;allegato_file&#39;]</div>
<div># Prepend the user ID; append the right file extension:</div><div>upload_id = uploaded_file.filename</div><div><br></div><div># If the file isn&#39;t already there, create it:</div><div>if upload_id not in upload_folder.objectIds():</div>
<div>    upload_folder.invokeFactory(&#39;File&#39;, id=upload_id)</div><div><br></div><div># Dump the uploaded content into it:    </div><div>file = upload_folder[upload_id]</div><div>file.setFile(uploaded_file.read(), filename=upload_id, content_type=uploaded_file.headers[&#39;Content-Type&#39;])</div>
<div><br></div><br>-- <br>Faber<br>--------------------<br>&quot;Life is what happens to you while you&#39;re busy making other plans&quot; - J. Lennon<br>
</div>