2016-09-28 29 views
0

我已經創建了一個Java web服務,在選定的文件上執行指定的功能。我將不得不將服務部署到服務器,並將調用url來從我的Java代碼中提取服務。現在,要在其上執行功能的文件必須作爲參數發送到webservice的post標題中。我怎樣才能從服務器訪問這個文件路徑?如果我只是將路徑發送到該文件(例如C:/folder/file.pdf)作爲web服務的參數,它是否會工作?如果不是,那又如何實現呢?如何從部署在服務器上的Java web服務訪問本地文件?

在部署服務之前,我需要知道答案。

WebClient的是:

WebTarget webTarget = clientobj.target("http://localhost:8080/myWebApp/method1/Name1"); 
      MultivaluedMap<String, String> formData = new MultivaluedHashMap<String, String>(); 
      formData.add("methodName", methodName); 
      formData.add("pdfPath", "C:/folder/a.pdf"); //path to my pdf doc that needs to be sent to the server 
      formData.add("textFile", "C:/folder/b.txt"); 
      Response response = webTarget.request().post(Entity.form(formData)); 
      String output = response.readEntity(String.class); 

和web服務如下:

@POST 
    @Produces(MediaType.TEXT_PLAIN) 
    public String createBooking(@PathParam("methodName") String methodName, 
      @FormParam("pdfPath") String pdfPath, 
      @FormParam("textFile") String textFile)) 
{ 
PdfReader reader = new PdfReader(pdfPath); 
} 
+1

Web服務服務器可以訪問您計算機上的文件嗎?如果是這樣,您可以發送文件的名稱。如果沒有,您可能必須將文件上傳到Web服務器服務器,以便它可以直接訪問它。 – Jason

+0

如何知道服務器是否可以訪問我的機器上的文件?我是新手! –

+1

然後它不。以這種方式來看 - 我可以給你發一個破損的燈具,你可以修理它並將它貼回給我。如果我只是給你發電子郵件給我,你家裏的燈具壞了,那麼除非你有我的鑰匙和地址,否則它不會被修復。你有同樣的問題 - 發送你的網絡服務器文件的路徑是完全沒有用的,除非你在某種程度上交換了訪問你的計算機的方式。你需要結束整個文件,服務器會處理它,然後你可以再次下載它。 –

回答

1

有兩種方法來做到這一點。

如果您的計算機和服務器都在同一個網絡,並共享資源,那麼你的服務器可以直接訪問該文件。

2-這是最重要的方法。您首先需要將文件 上傳到您的服務器,然後將該文件寫在您的服務器上,並執行您想要的文件 。

+0

謝謝!你能否向我提供如何將文件上傳到服務器的相關代碼?我是否發送路徑並允許服務器下載?我在這裏有點迷路 –

+0

@LeMe把你的Web服務控制器的代碼和客戶端功能,然後我將能夠更新和服務器無法從您的客戶端下載文件 –

+0

如果您正在使用Java休息服務,然後參考此鏈接** [鏈接](https://www.mkyong.com/webservices/jax-rs/file-upload-example-in-jersey/)** –