0
這就是我需要做的。Grails:編輯(form:multipart)文件(從客戶端)並將其發送回客戶端
1) Accept an xlsx/xls file from client.
2) Backend will receive it in the form of multipart file
3) The file will be processed and if the format of the data is invalid, that same file will be updated and the error message will be written in the side of the input of the client.
4) this modified file will be sent back to the user.
到目前爲止,這是我做了什麼。
def generateErrorReport(ServletResponse response, Map messageCollections, MultipartFile file, String ext){
FileInputStream fileIn = file.getInputStream()
Workbook workbook = (ext.equalsIgnoreCase("xls")) ? new HSSFWorkbook(fileIn) : new XSSFWorkbook(fileIn)
workbook = this.getWorkbook((MultipartFile) file, ext.equalsIgnoreCase("xls"));
try {
Sheet sheet = workbook.getSheetAt(0)
Long lastCellNum = sheet.getRow(0).getLastCellNum();
for(int i=1; i<sheet.getLastRowNum(); i++){
if(messageCollections[i]!=null && messageCollections[i]!=[]) {
Cell cell = sheet.getRow(i).getCell(lastCellNum + 1)
cell.setCellValue(messageCollections[i]);
}
}
fileIn.close()
FileOutputStream fileOut = new FileOutputStream((File) file)
workbook.write(fileOut);
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
response.setHeader("Content-Disposition", "Attachment;Filename=error.xlsx")
response.outputStream << fileOut
response.outputStream.flush()
fileOut.close()
}catch(Exception ex){
println ex
}
}
此代碼無法正常工作,因爲您無法將MultipartFile轉換爲文件。我想知道這個代碼是否還有希望。
是否有可能修改Multipartfile,並將其發送回客戶端不保存文件到服務器或者我真的需要它首先保存到服務器,所以我可以做我需要做什麼?如果可能的話,我該怎麼做?什麼是最好的方法來做到這一點?
簡短的回答是肯定的。一旦從request.getFile(「」)獲得multiPartFile,您可以修改文件並將其輸出到用戶。沒有必要保存文件。什麼是最好的方法?答案取決於用例,你想修改的文件的數量,加載你的應用程序等。 –
Armaiti
@Aramiti你能告訴我該怎麼做?謝謝! – user3714598
這可能會幫助你:[將MultipartFile轉換爲java.io.File而不復制到本地機器](http://stackoverflow.com/questions/21089106/converting-multipartfile-to-java-io-file-without-copying -to-LOCAL-MACHINE) – Armaiti