我的文件駐留在我的機器上的某個位置,如C://users//abc.txt,我想編寫一個Java程序來使用REST API通過HTTP傳輸此文件。我用MockHttpServelet請求創建的要求,但不知何故,我無法將文件使用Rest API通過HTTP將文件從Java後端上載到遠程服務器的問題。
回答
使用HttpClient轉移:
String url = "http://localhost:8080/upload"; // Replace with your target 'REST API' url
String filePath = "C://users//abc.txt";
CloseableHttpClient httpClient = HttpClients.createDefault();
try {
HttpPost httpPost = new HttpPost(url);
FileEntity entity = new FileEntity(new File(filePath), ContentType.TEXT_PLAIN);
httpPost.setEntity(entity);
HttpResponse httpResponse = httpClient.execute(httpPost);
System.out.println(httpResponse.getStatusLine().getStatusCode()); // Check HTTP code
} finally {
httpClient.close();
}
身份驗證:
String url = "http://localhost:8080/upload"; // Replace with your target 'REST API' url
String filePath = "C://users//abc.txt";
String username = "username"; // Replace with your username
String password = "password"; // Replace with your password
RequestConfig requestConfig =
RequestConfig.custom().
setAuthenticationEnable(true).
build();
CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
credentialsProvider.setCredentials(
AuthScope.ANY,
new UsernamePasswordCredential(username, password));
CloseableHttpClient httpClient =
HttpClients.custom().
setDefaultRequestConfig(requestConfig).
setDefaultCredentialsProvider(credentialsProvider).
build();
try {
HttpPost httpPost = new HttpPost(url);
FileEntity entity = new FileEntity(new File(filePath), ContentType.TEXT_PLAIN);
httpPost.setEntity(entity);
HttpResponse httpResponse = httpClient.execute(httpPost);
System.out.println(httpResponse.getStatusLine().getStatusCode()); // Check HTTP code
} finally {
httpClient.close();
}
感謝Greg。任何想法需要指定session/userCredentials,以便服務器可以訪問它? –
身份驗證使用是另一個問題。 使用HttpClients.custom()。setDefaultRequestConfig(requestConfig).setDefaultCredentialsProvider(credentialsProvider)。 –
它會不會影響性能?我的意思是當文件打開傳輸時,JVM會將文件加載到內存中。如果它很大,我相信會有性能問題。任何想法如何可以避免? –
String location="C:\\Usersabc.img";
Path path = Paths.get(location);
String name=location.substring(location.lastIndexOf("\\")+1);
MultipartEntity multipart= new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
try {
multipart.addPart("image", new ByteArrayBody(Files.readAllBytes(path), ContentType.APPLICATION_OCTET_STREAM.getMimeType(),name));
}
catch (IOException ex) {
// TODO Auto-generated catch block
ex.printStackTrace();
}
這也適用於我 –
- 1. 使用Android HTTP客戶端將文件上載到REST api服務器
- 2. 如何使用Java將nodejs服務器上的文件上載? (REST API)
- 3. 如何使用java將文件上傳到http遠程服務器?
- 4. Java客戶端如何上傳/下載文件到/從遠程HDFS服務器?
- 5. 將文件下載到遠程服務器HTTP 400錯誤
- 6. 使用PHP將文件從遠程服務器上傳到FTP服務器
- 7. 從java客戶端上傳文件到apache http服務器
- 8. 使用nodejs和rest api從遠程機器下載文件
- 9. 使用java從遠程服務器訪問文件
- 10. cURL將文件上傳到代理服務器後面的遠程服務器
- 11. 使用python下載/上傳文件到遠程windows服務器
- 12. 通過FTP協議將文件複製到遠程服務器
- 13. 通過用戶計算機將遠程文件上傳到我的服務器
- 14. 通過C程序將文件複製到HTTP服務器
- 15. 從服務器遠程訪問文件
- 16. java:使用POST將文件上傳到HTTP服務器,服務器代碼問題?
- 17. 通過REST服務通過Java中的「Content-Disposition」標題下載PDF文件
- 18. 如何將文件從adf.ly下載到遠程服務器?
- 19. 文件從iPhone應用程序上傳到HTTP服務器。服務器端的C#API方法
- 20. 通過HTML和JavaScript上傳遠程服務器上的文件
- 21. 使用php curl將zip文件上傳到遠程服務器
- 22. 使用PHP將多個文件上傳到遠程服務器?
- 23. 使用ajax將文件上傳到遠程服務器
- 24. 使用WCF將文件上傳到遠程服務器
- 25. 使用curl將URL文件上傳到遠程服務器
- 26. 使用ASP.Net(VB)將文件上傳到遠程服務器1.1
- 27. YII 2遠程服務器上的REST CORS問題
- 28. Rails3 - 從遠程服務器上下載文件並將其上傳到S3
- 29. 遠程服務器上的外部模板(通過http)
- 30. Rsync問題:將文件夾從遠程服務器下載到本地服務器
不知道關於REST API,但是我已經使用MySql作爲後端上載了服務器上的文件。 –
不知道你使用的是什麼,是MongoDB嗎? –
Milind,獨立Java應用程序正在後端運行。我有一個使用Rest API將文件從我的目錄傳輸到某個服務器的功能。服務器接受Rest API Resquest。我不想使用任何協議如scp來進行文件傳輸。服務器將只通過Rest API接受請求 –