NetSuite - 将文件写入 Suitelet 响应以直接下载文件

NetSuite - writing a file to Suitelet response to directly download file

希望对您有所帮助。这么小的东西让我很烦!!

我在 SuiteScript 2.0 中只想在按下 Suitelet 上的“提交”按钮后立即将 CSV 文件直接下载到客户端。我的代码下载到客户端,但是文件内容不正确

以下代码创建文件(成功):

    //creating CSV file
    var fileObj = FILEMODULE.create({
        name: 'ThreePLreport.csv',
        fileType: FILEMODULE.Type.CSV,
        contents: contents
    });  

最后一段代码将文件写入客户端:

   context.response.writeFile(fileObj,true);

现在 - 当我打开文件时,它看起来像这样:

当我将同一个文件保存在文件柜中时,它看起来是正确的:

我试过将 HEADERS 添加到代码中,例如:

context.response.addHeader({
        name: 'Content-Type:',
        value: 'text/csv' //text/csv
        });
context.response.addHeader({
        name: 'Content-Disposition',
        value: 'attachment; filename="report1.csv"'
        });

这似乎无助于更正 CSV 文件中的内容。仍显示如上所示的 HTML 代码。

有什么想法吗?

提前致谢!

尝试删除内联选项(在浏览器中显示),因此更改:

context.response.writeFile(fileObj,true);

context.response.writeFile(fileObj);

我已经差不多做了这么多次了。看起来你在写入文件后没有返回。例如:

context.response.writeFile({
    file:fileObj,
    isInline:false
});
return; 

我遇到了同样的问题,我以为是 header 但不是。我意识到我提交了错误的内容。内容必须是用逗号分隔每一列的数组。行尾是'\n'.

例如。 ['title1','title2','title3','\n','contentline1','contentline1','contentline1','\n','contentline2','contentline2','contentline2','\n']

1.- 构建数组 2.- 创建 csv 文件

var downFile = file.create({
            name: somename + '_' + qty + '.csv',
            fileType: file.Type.CSV,
            contents: csvBody,
 });

3.- 下载文件

context.response.writeFile({ 文件:downFile });