2013-05-06 88 views
-1

的情況如下,在上傳圖片如何使用java上傳文件?

用戶點擊,然後三個上傳文件中的字段將顯示上傳三張圖片,也有一個按鈕來添加更多的圖像,用戶可以上傳圖片的數量不受限制,但點擊該按鈕顯示更多的上傳文件字段,我不知道如何實現這一點。有很多例子,但他們沒有一個上傳更多的圖像功能。

我有下面的代碼,但不知道如何實現按鈕,上傳更多圖片

<s:form action="uploadImages" method="POST" encytype="multipart/form-data"> 
     <s:file label="File 1" name="fileUpload"/> 
     <s:file label="File 2" name="fileUpload"/> 
     <s:file label="File 3" name="fileUpload"/> 
     <s:submit value="submit" name="Upload"/> 
    </s:form> 

回答

4

這並不困難。

裏面你的JavaScript,跟蹤計數器值從計數器= 0

創建第一個上傳字段作爲原料:

<input type="file" name="file[0]">

每當用戶點擊「上傳更多圖片... ',使用JavaScript增加計數器,然後附加一個新的文件輸入字段:

<input type="file" name="file[1]">

等等...

<input type="file" name="file[2]"> 
<input type="file" name="file[3]"> 
<input type="file" name="file[4]"> 
<input type="file" name="file[5]"> 

當您提交表單,所有的圖像將被提交到服務器,你可以使用一個循環逐一處理每個上傳的圖片。

要快速添加新的文件輸入字段,我建議使用jQuery。 首先,設置表單上的ID,如下圖所示:

<s:form id="myForm" action="uploadImages" method="POST" encytype="multipart/form-data"> 
    <s:file label="File 1" name="file[0]"/> 
    <s:file label="File 2" name="file[1]"/> 
    <s:file label="File 3" name="file[2]"/> 
    <s:submit value="submit" name="Upload"/> 
</s:form> 

然後,添加這樣一個新的輸入字段:

<script type="text/javascript"> 
    var counter = 3; 

    function onAddMoreButtonClicked() { 
     for (var i = 0; i < 3; i++) { 
      $("#myForm").append($("<input>").attr({"type" : "file", "name" : "file["+counter + "]"})); 
      counter = counter + 1; 
     } 
    } 
</script> 
+0

感謝您的迅速響應,但如何添加新的輸入字段?你知道任何示例代碼嗎? – J888 2013-05-06 03:07:33

+0

已更新的答案! – 2013-05-06 03:12:28

+0

謝謝我應該在哪裏點擊按鈕以獲取更多輸入文件? – J888 2013-05-06 05:24:28

0

在POST方法從形式multypart 正在添加嘗試

make @Autowired ServletContext c; 或從servlet中取其對象

 byte[] bytes = file.getBytes(); 

     String UPLOAD_FOLDEdR=c.getRealPath("/images");  
     Path path = Paths.get(UPLOAD_FOLDEdR +"/"+ file.getOriginalFilename()); 
     Files.write(path, bytes);