[英]NetSuite - Suitelet POST request.files is empty but the file metadata is there
我正在使用來自外部 Suitelet 的 GET 請求的 HTML 字符串到 output 來顯示提交表單。 該表單有一個文件輸入和兩個文本輸入。 文件元數據似乎正在進入 POST,因為我可以通過完整路徑 (params.request.files.userfile) 訪問 context.request.files.file_name.fileType 和其他字段,但除了這里沒有實際內容元數據。 我這樣說是因為當我嘗試記錄 params.request.files[0] 或 params.request.files.userfile 時,我在日志中得到空字符串。
在文件櫃中的Netsuite中創建的文件是正確的文件類型和名稱,只有內容是空的。
這是我在 Suitelet 的 GET 部分中的表單:
var html = '<form method="post" enctype="multipart/form-data" accept-charset="utf-8">';
html += '<input type="text" id="id" name="coolid" value="0"><br>';
html += '<input type="text" id="token" name="token" value=""><br>';
html += '<input type="file" id="file" name="file" accept="image/png">';
html += '<button type="submit">submit</button>';
html += '</form>';
params.response.addHeader({
name: 'Content-Type',
value: 'text/html; charset=UTF-8'
});
params.response.write({ output: html });
這是 Suitelet 的 POST 部分:
var fileObj = file.create({
name: params.request.parameters.coolid+ "_file",
fileType: params.request.files.userfile.fileType,
contents: params.request.files[0]
});
fileObj.folder = -1;
fileObj.save();
我可以在 Firefox 開發工具中看到從表單發送的文件數據:
該文件正在 Netsuite FileCabinet 中創建。 只有0個字節。 關於我做錯了什么的任何線索?
Suite answer id 49537 、 84073和82126建議您不需要使用 file.create 方法,並且該文件可通過 ServerRequest.files 屬性訪問。
代替:
var fileObj = file.create({
name: params.request.parameters.customer_ext_id + "_file",
fileType: params.request.files.userfile.fileType,
contents: params.request.files[0]
});
fileObj.folder = -4;
fileObj.save();
和:
var newFile = context.request.files['FILE_ID'];
newFile.folder = FOLDER_ID; //folder internal ID
var newFileId = newFile.save();
如果您不需要/致力於使用 html,則以下內容也應該有效。
if (context.request.method === 'GET'){
var form = serverWidget.createForm({
title: 'Simple Form'
});
var field = form.addField({
id: 'custpage_file',
type: 'file',
label: 'Document'
});
form.addSubmitButton({
label: 'Submit Button'
});
context.response.writePage(form);
}
if (context.request.method === 'POST') {
var newFile = context.request.files.custpage_file;
newFile.folder = 123;
var newFileId = newFile.save();
log.audit('file created', 'file id: '+ newFileId);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.