In response to #1: My suggestion to use jquery (NWF$) to get the attachment URLs for the current item, and then to add them to the form through a DIV element defined inside a Multi Line Textbox This method works, but it's pretty hacky and may not survive an update. Your mileage may vary.
Note: for this I am using SharePoint 2016 on-premises. This will probably not work for SharePoint Online.
- Add a Multi Line Textbox to the form. In the settings, make it use Enhanced Rich Text. Set the Default value to an empty DIV with an ID. I used atch:

- Next you need to link a JavaScript file to the form. You can either embed JS directly into the form through the "Custom JavaScript" setting, or link to an external file through the "Custom JavaScript Includes" setting. I prefer the latter because then you can debug without needing to re-publish the form a bunch of times. Also, it accepts relative URLs.

- Create a Validation rule to disable the Multi Line Textbox. Set the condition to true so that it will always be valid. We do this because, in Edit and New mode, the control will still function as an input field, meaning the user could potentially erase the DIV or break the form just by typing into it. We use a Validation Rule because it is applied to the field after the Form renders. This way, the field is still visible and active on the page, but the user cannot change its contents.

- in the JavaScript file, start with the Nintex method needed to execute code immediately after the Form loads. The RegisterAfterReady method works for this purpose, and is just one of several Nintex Form Events.
NWF.FormFiller.Events.RegisterAfterReady(function () {
console.log('Form loaded!');
// Do stuff
});
To get the attachments and display them in the DIV, we need to do the following:- Get the ID of the current List Item
- Make a REST call to the parent list to get an array of the current item's attachment URLs
- Parse the query response
- For each attachment URL, create an IMG element in the multiline control
- Add each image to the DIV in the Multi Line Textbox
- First let's get the current item ID. You can use the Nintex Item Property ID for this ({ItemProperty:ID}) if you are embedding your code in the form through the Custom JavaScript setting. If you are using a JavaScript include, then you can use a SharePoint method instead: GetUrlKeyValue(). This parses the browser's location and returns the value of the given parameter. In this case, we want the ID, which is conveniently included in every Item's URL:

var itemId = GetUrlKeyValue('ID'); // returns 114
- Now for the REST query. I use REST here because I think it's more straightforward than JSOM, and also you can take advantage of NWF$ to accomplish the task.
The REST endpoint for getting Attachments is:var url = siteURL + "/_api/web/lists/getByTitle('" + listName + "')/items(" + itemId + ")/AttachmentFiles";
Here is the code for the REST call using NWF$:
// var siteUrl, listName;
var itemId = GetUrlKeyValue('ID');
var url = siteURL + "/_api/web/lists/getByTitle('" + listName + "')/items(" + itemId + ")/AttachmentFiles";
var query = NWF$.ajax({
url: url,
type: 'GET',
headers: {
/* need this to get JSON, otherwise it returns XML */
'accept': 'application/json; odata=verbose'
}
});
- Now we deal with the query response. Assuming we actually have some attachment URL's to work with, we create an IMG element from each one. I've styled them as thumbnails here so that they don't overflow the Multi Line Textbox.
/* when the query returns data */
query.done(function (data) {
/* get the actual results from the data blob */
var results = data.d.results;
/* identify the element to hold the images */
var target = NWF$('#atch');
/* create an IMG element for each result,
i.e. each attachment URL */
var attachments = results.map(function (result) {
return NWF$('<img/>', {
src: result.ServerRelativeUrl,
alt: result.FileName,
/* style the images as thumbnails */
style: "margin:5px;width:100px;height:100px;float:left;"
});
});
/* add the images to the target element */
attachments.forEach(function (element) {
element.appendTo(target);
});
});
query.fail(function () {
console.log("Query Failed");
});
Assuming this all works, this is the result*:

- Customize as needed.
*In this example form, I had started fresh, then deleted all of the controls except for the Attachments and the Multi Line Textbox.
Also, I put the complete script in a Gist here: nintex-show-attachments.js