我花了一整天的時間工作並研究我的客戶端如何從服務器數據庫上載和下載文件。當服務器和客戶端運行在同一臺機器上時,我的代碼工作正常,但當客戶端在不同的機器上以及服務器上時,一切都搞砸了。這是我的學校項目,任何人都可以幫助我實施該計劃應該實現的目標。我在互聯網上搜索和搜索,爲了我自己的努力,我找不到解決方案,我看到了一些,但它們是與servlet和jsp相關的。我需要做一個桌面應用程序。有關我的代碼的一些信息在這裏。對於下載通過遠程方法調用文件上傳和下載
服務器實施:
public synchronized void downloadFile(Object row) throws RemoteException {
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String database = "jdbc:odbc:DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};DBQ="+path+".accdb;";
dbConn = DriverManager.getConnection(database, "", "");
ps = dbConn.prepareStatement("SELECT * FROM File WHERE ID = ?");
ps.setString(1, row.toString());
ResultSet rs = ps.executeQuery();
while (rs.next()) {
InputStream is;
FileOutputStream fos;
try {
is = rs.getBinaryStream("FileSize");
fos = new FileOutputStream(new File("C:/" +rs.getString("FileName")));
int bytesRead;
while ((bytesRead = is.read()) != -1) {
fos.write(c);
}
is.close();
fos.close();
} catch (Exception e) {
e.printStackTrace();
}
}
} catch (Exception e) {
e.printStackTrace();
}
ps.close();
dBConn.close();
}
這裏是我的下載按鈕的ActionListener:
if (source.equals(downloadB)) {
try {
if (fileTable.getSelectedRow() == -1) {
JOptionPane.showMessageDialog(null, "No file to be download", "Error", JOptionPane.ERROR_MESSAGE);
} else {
s.downloadFile(fileTable.getValueAt(fileTable.getSelectedRow(), 0));
JOptionPane.showMessageDialog(null, "Download Successful", "Information", JOptionPane.INFORMATION_MESSAGE);
}
} catch (RemoteException re) {
JOptionPane.showMessageDialog(null, "Error downloading file", "Error", JOptionPane.ERROR_MESSAGE);
}
}
我的數據庫containts如下:
ID:自動編號
文件名:文本
文件大小:OLE對象
什麼是路徑的價值? – Sach 2013-03-16 14:41:09
那麼路徑的值就是數據庫所在的路徑。 – 2013-03-16 14:47:36
分享該文件的所有用戶,並使用UNC路徑來訪問文件:) – Sach 2013-03-16 14:49:21