如何传输pdf文件?我在网上找到了多种方法,但其中大多数都涉及对我们当前系统如何工作的返工,这远非理想。如何在角度上使用POST上传文件?
我不太熟悉角度,但我试图上传一个文件到服务器。我正在使用现有的架构,所以问题不像从头开始重写一样简单。 Spring会抱怨说,“当前请求不是多部分请求”,如果我尝试将它作为多部分文件发送,但我不知道如何使其成为一个。文件类型必须是Blob类型。目前,没有错误发生,但数据块传输后data.content为空。
这是我目前有:
$scope.uploadPDF = function(uploadedPDF) {
var url = 'uploadPDF';
data = {};
data.comments = $scope.worksheet.comments;
data.queryId = $scope.qId;
data.responseId = $scope.responseId;
data.requestTS = new Date().getTime();
data.content = uploadedPDF;
$http.post(url, data);
};
,并调用它是这样的,它拉的文件中,生成一个名字,并添加名称作为一个属性来处理服务器端的功能,做了一些无关联的逻辑,然后调用用于传输的上述功能:
$scope.addPDF = function() {
var pdfUploads = document.getElementById('file');
if ('files' in pdfUploads)
{
if (pdfUploads.files.length == 0)
{
$scope.setReasonForChange("addPDF");
}else
{
for (var i = 0; i < pdfUploads.files.length; i++)
{
var currentTimeZone = new Date().toLocaleTimeString('en-us',{timeZoneName:'short'}).split(' ')[2];
$scope.militaryTime = $filter('date')(Date.now(), "MM-dd-yyyy_HHmm");
pdfUploads.files[i].generatedFileName = "QID-" + $scope.queryId + "_" + $scope.worksheet.response.PDF_DESCRIPTION + "_" + $scope.militaryTime + currentTimeZone + ".PDF";
}
}
}
var pdfComment = document.getElementById("pdfComment").value;
if (!pdfComment)
{
$scope.setReasonForChange("updatePDF");
} else
{
var blobPDF = new Blob([pdfUploads.files[0]], {type: 'application/pdf'});
$scope.uploadPDF(blobPDF);
}
}
HTML是:
<form name="UploadForm" id="UploadForm" class="details" form-on-change="formChanged()" enctype="multipart/form-data">
<input type="file" multiple size="50" id="file" name="file" ng-disabled="is_readonly"/>
<button ng-click="addPDF()" ng-disabled="is_readonly">Add</button>
</form>
最后,服务器端是这样的,其中i认为数据是LinkedHashMap中,其中,所述值是从在服务器截取的一部分,并处理:
@ResponseBody
@RequestMapping(value = "/uploadPDF", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseAttachment uploadPDF(@RequestBody Data data, HttpServletRequest request) throws Exception {
User user = (user) request.getSession(false).getAttribute(FieldConstants.USER_SESSION_ATTR);
ResponseAttachment newPDF = responseAttachmentService.addAttachment(data, user.getUserId());
return newPDF;
目前,它发送和接收的数据,除了代替文件应该是空的。
我已经尝试过ng-fileupload,但将它附加到我们的产品中是一场噩梦,尤其是考虑到它的使用有点需要用户已经知道如何使用angular,因为它没有文档......并且我们没有角度人。
谢谢!我认为这是我需要的! –