我无法使用以下javascript代码上传附件到Corda节点。我得到 "HTTP ERROR 400 Probleming uploadattachment. 原因是:"有一个没有文件的上传请求"。Got an upload request with no files"。
uploadmodalInstance.attachmentfile = document.getElementById('attachmentfile').files[0];
var formdata = new FormData();
formdata.append('jar', uploadmodalInstance.attachmentfile);
$http.defaults.headers.common['Accept'] = 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8';
// NOW UPLOAD THE FILES.
$http({
method: 'POST',
url: '/upload/attachment',
data: formdata,
headers: {'Content-Type': 'multipart/form-data; boundary=----WebKitFormBoundaryqtDm9u9ZQbwnwy3A'}
}).then(
(result) => {
uploadmodalInstance.displayMessage(result); //success
},
(result) => {
uploadmodalInstance.displayMessage(result); //failure
}
);
然而,我可以使用HTML上传相同的附件,如下图所示。
<form action="http://localhost:10007/upload/attachment" method="post" enctype="multipart/form-data">
<div class="form-group">
<input type="file" name="jar" class="form-control">
</div>
<br>
<button type="submit" class="btn btn-default">Upload blacklist</button>
</form>
javascript的问题是什么?我在Firefox开发者工具中检查了标题和formdata,两种情况下都是一样的。
下面是包含附件文件元素的HTML页面代码。
<script type="text/ng-template" id="demoAppUploadModal.html">
<div class="modal-header">
<h4 class="modal-title">Upload a Document</h4>
</div>
<form>
<div class="modal-body">
<div class="form-group">
<label for="attachmentfile" class="control-label">Document Attachment:</label>
<input type="file" ng-model="uploadmodalInstance.form.attachmentfile" class="form-control" id="attachmentfile">
</div>
<div ng-show="modalInstance.formError" class="form-group">
<div class="alert alert-danger" role="alert">
<span class="glyphicon glyphicon-exclamation-sign" aria-hidden="true"></span>
<span class="sr-only">Error:</span>
Enter valid parameters
</div>
</div>
</div>
<div class="modal-footer">
<button ng-click="uploadmodalInstance.cancel()" type="button" class="btn btn-default">Cancel</button>
<button ng-click="uploadmodalInstance.create()" type="button" class="btn btn-primary">Upload</button>
</div>
</form>
<!--form action="/upload/attachment" method="post" enctype="multipart/form-data">
<div class="form-group">
<input type="file" name="jar" class="form-control">
</div>
<br>
<button type="submit" class="btn btn-default">Upload Document</button>
</form -->
</script>
所以请记住,附件在新版Corda中的工作方式是不同的。
我在这里引用文档中关于如何使用corda附件的答案。
要添加附件,必须先将文件上传到节点,节点返回一个唯一的ID,可以使用TransactionBuilder.addAttachment()来添加。附件可以通过RPC和Corda Node shell上传和下载。
https:/docs.corda.netdocscorda-os4.4tutorial-attachments.html)。