2011-02-16 213 views
1

我需要實現一個將文件上傳到服務器的servlet,我意識到每個人都說它必須是關於上傳文件的POST方法,而不是GET方法。然而,有沒有辦法上傳文件,並且即使請求來自POST方法,請求中的請求參數也會顯示在url中?如果沒有,是否有另一種方法?通過url上傳文件

目前使用POST方法我的servlet是http://example.com/FileUpload/UploadFile

我想要的是像http://example.com/FileUpload/UploadFile?ID = 125 & FILENUM = 5個

感謝您的輸入服用點。

+1

POST是將文件發送到服務器的推薦方式;一個原因是GET參數的長度有限。 – miku 2011-02-16 17:59:27

回答

2

只能張貼到

http://example.com/FileUpload/UploadFile?id=125&fileNum=5

代替

http://example.com/FileUpload/UploadFile

有沒有這樣的限制,你不能發佈於具有參數的URL。您可以像現在這樣處理髮布數據,此外,您還可以獲取get參數。

+0

你有一個鏈接或更多的文件,讓我學習如何做到這一點? – David 2011-02-16 18:14:15

+0

哪部分不清楚?你現在怎麼做?而且,你打算如何獲得id和fileNum值? – 2011-02-17 04:14:50

1

我認爲這不是一個優雅的解決方案,但是您可以在提交它以包含查詢字符串參數之前使用JavaScript來更改表單元素的操作。

形式將是這樣的:

<form method="POST" id="myForm" onSubmit="submitMyForm(this)> 
    <input type="text" id="id"> 

然後你需要JavaScript來改變形態的動作元素:

function submitMyForm(theForm) { 
    theForm.action="http://example.com/FileUpload/UploadFile?id=" + 
     getElementById("id").value; 
    theForm.submit(); 
} 

是有一些原因,你不能只提交參數與張貼並在服務器端拉出來?

0

您可以在POST中發送參數和文件。例如在html中你可以使用這個值的表單,它們可以是隱藏類型。 在servlet中,您可以像使用GET一樣獲取值。

最好使用POST方法,因爲用戶無法更改URL方向欄中的值。

0

另外,如果你做一個多部分/表單數據文章,你可以包括多個參數以及你的文件。參數作爲帖子正文的一部分與文件一起發送。