Итак, у меня есть домашнее задание из школы, в котором клиент должен отправлять неограниченное количество файлов на сервер. Я сделал свою идею так.
- Клиент будет отправлять неограниченное количество файлов на сервер.
- Сервер перенаправит файлы, загруженные клиентом, в папку моего сервера wamp.
У меня есть рабочий код, но этот код может отправлять только 1 файл с клиента на сервер. Я также хочу, чтобы имя файла загруженных файлов увеличивалось, потому что в моих кодах используется только 1 имя файла, поэтому, если больше клиентов загрузят свои файлы, они перезапишут старое имя файла.
Например: file01.rar затем загрузить file02.rar и так далее.
Вот мой код сервера:
public void run() {
filePath = "C:/wamp/www/file.rar";
byte[] aByte = new byte[1];
int bytesRead;
InputStream is = null;
try {
is = clientSocket.getInputStream();
} catch (IOException ie) {
ie.printStackTrace();
}
ByteArrayOutputStream baos = new ByteArrayOutputStream();
if (is != null) {
FileOutputStream fos = null;
BufferedOutputStream bos = null;
try {
fos = new FileOutputStream(filePath);
bos = new BufferedOutputStream(fos);
bytesRead = is.read(aByte, 0, aByte.length);
do {
baos.write(aByte);
bytesRead = is.read(aByte);
} while (bytesRead != -1);
bos.write(baos.toByteArray());
bos.flush();
bos.close();
} catch (IOException ie) {
ie.printStackTrace();
}
}
}
Вот мой клиентский код:
BufferedOutputStream bos = null;
try {
bos = new BufferedOutputStream(s.getOutputStream());
} catch (IOException ie) {
ie.printStackTrace();
}
if (bos != null) {
File uploadFile = new File(clientFacultyUploadTextField.getText());
byte[] myFileSize = new byte[(int)uploadFile.length()];
FileInputStream fis = null;
try {
fis = new FileInputStream(uploadFile);
} catch (FileNotFoundException fife) {
fife.printStackTrace();
}
BufferedInputStream bis = new BufferedInputStream(fis);
try {
bis.read(myFileSize, 0, myFileSize.length);
bos.write(myFileSize, 0, myFileSize.length);
bos.flush();
bos.close();
clientFacultyUploadTextField.setText("Upload complete...");
} catch (IOException ie) {
ie.printStackTrace();
}
}