可以對文件的一些屬性設置,比如大小:
<bean class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <property name="maxUploadSize"> <value>1000000</value> </property> </bean>當然gsp頁面需要在form里面設置enctype="multipart/form-data"
<g:form method="post" action="save" enctype="multipart/form-data"> <input type="file" name="file"/> <input type="submit"/> </g:form>
下面就是處理上傳的文件了:
import org.springframework.web.multipart.MultipartHttpServletRequest
import org.springframework.web.multipart.commons.CommonsMultipartFile
class UploadController {
static String uploadDir = "uploadfile"
def index = {
render(view:"upload")
}
def save = {
if (request instanceof MultipartHttpServletRequest) {
MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request
CommonsMultipartFile orginalFile = (CommonsMultipartFile) multiRequest.getFile("file")
// 判斷是否上傳文件
if (orginalFile != null && !orginalFile.isEmpty()) {
// 獲取系統默認文件路徑分隔符
def separator = System.getProperty("file.separator")
println "file separator is ${separator} "
// 獲取原文件名稱
String originalFilename = orginalFile.getOriginalFilename()
// 獲取上傳文件擴展名
def extension = originalFilename.substring(originalFilename.indexOf(".") + 1)
println "extension is ${extension}"
def name = ".." + separator + uploadDir + separator + orginalFile.getOriginalFilename()
println "file name is : ${name}"
// 使用存放文件的絕對路徑創建輸出流
/**
DataOutputStream out = new DataOutputStream(new FileOutputStream(name))
InputStream is = null
try {
is = orginalFile.getInputStream()
byte[] buffer = new byte[1024]
while (is.read(buffer) > 0) {
out.write(buffer) // 寫入磁盤
}
} catch (IOException exception) {
exception.printStackTrace()
} finally {
if (is != null) {
is.close()
}
if (out != null) {
out.close()
}
}
*/
orginalFile.transferTo(new File(name))
render(view:"success")
}
} else {
println "No multipart"
}
}
}