मैं एफ़टीपी फ़ाइल स्थानांतरण के लिए Apache Commons शुद्ध उपयोग करने के लिए कोशिश कर रहा हूँ भ्रष्ट फ़ाइलों को अपलोड किया गया है।कॉमन्स शुद्ध एफ़टीपी
समस्या यह है कि फाइलें सर्वर भ्रष्ट पर आ रही हैं। 'भ्रष्ट' से मेरा मतलब है कि Winrar मुझे बताता है कि एक ज़िप फ़ाइल में 'संग्रह का अप्रत्याशित अंत' है। कभी-कभी फाइलें पूरी तरह खाली होती हैं। मैंने देखा है कि यह बड़ी फ़ाइलों (100kb +) के लिए अधिक होता है, हालांकि छोटी फ़ाइलों के लिए भी होता है (20kb)।
मुझे पता है कि स्रोत ज़िप फ़ाइल अपलोड होने पर मान्य है, और केवल 243 केबी है।
मुझे कोड से कोई त्रुटि/अपवाद नहीं मिलते हैं।
try
{
int CON_TIMEOUT = (int) TimeUnit.SECONDS.toMillis(20); // fail if can't connect within 20 seconds
int LIVE_TIMEOUT = (int) TimeUnit.MINUTES.toMillis(5); // allow up to 5 minutes for data transfers
FTPClient client = new FTPClient();
client.setConnectTimeout(CON_TIMEOUT);
client.setDataTimeout(LIVE_TIMEOUT);
client.connect(host);
client.setSoTimeout(LIVE_TIMEOUT);
client.login(user, pass);
client.changeWorkingDirectory(dir);
log("client ready");
File file = new File(filePath);
String name = new Date().getTime() + "-" + file.getName();
InputStream fis = null;
try
{
fis = new FileInputStream(file);
if (!client.storeFile(name, fis))
throw new RuntimeException("store failed");
log("store " + name + " complete");
}
finally
{
IOUtils.closeQuietly(fis);
try
{
client.logout();
log("logout");
}
catch (Throwable e)
{
log("logout failed", e);
}
try
{
client.disconnect();
log("disconnect");
}
catch (Throwable e)
{
log("disconnect failed", e);
}
}
}
catch (Throwable e)
{
log("transfer failed", e);
}
और कुछ लॉग:
यहाँ कोड निष्पादित किया जा रहा है
2010-08-10 21:32:38 client ready
2010-08-10 21:32:49 store 1281439958234-file.zip complete
2010-08-10 21:32:49 logout
2010-08-10 21:32:49 disconnect
2010-08-10 21:32:50 client ready
2010-08-10 21:33:00 store 1281439970968-file.zip complete
2010-08-10 21:33:00 logout
2010-08-10 21:33:00 disconnect
2010-08-10 21:33:02 client ready
2010-08-10 21:33:11 store 1281439982234-file.zip complete
2010-08-10 21:33:11 logout
2010-08-10 21:33:11 disconnect
2010-08-10 21:33:15 client ready
2010-08-10 21:33:25 store 1281439995890-file.zip complete
2010-08-10 21:33:26 logout
2010-08-10 21:33:26 disconnect
2010-08-10 21:33:27 client ready
2010-08-10 21:33:36 store 1281440007531-file.zip complete
2010-08-10 21:33:36 logout
2010-08-10 21:33:36 disconnect
2010-08-10 21:33:37 client ready
2010-08-10 21:33:48 store 1281440017843-file.zip complete
2010-08-10 21:33:48 logout
2010-08-10 21:33:48 disconnect
2010-08-10 21:33:49 client ready
2010-08-10 21:33:59 store 1281440029781-file.zip complete
2010-08-10 21:33:59 logout
2010-08-10 21:33:59 disconnect
2010-08-10 21:34:00 client ready
2010-08-10 21:34:09 store 1281440040812-file.zip complete
2010-08-10 21:34:09 logout
2010-08-10 21:34:09 disconnect
2010-08-10 21:34:10 client ready
2010-08-10 21:34:23 store 1281440050859-file.zip complete
2010-08-10 21:34:24 logout
2010-08-10 21:34:24 disconnect
2010-08-10 21:34:25 client ready
2010-08-10 21:34:35 store 1281440065421-file.zip complete
2010-08-10 21:34:35 logout
2010-08-10 21:34:35 disconnect
ध्यान दें कि इन सब के 15 सेकंड के भीतर पूरा थे, और सर्वर पर जिसके परिणामस्वरूप फ़ाइलों के सभी भ्रष्ट हैं ।
मैंने किसी भी टाइमआउट को सेट किए बिना भी परीक्षण किया है और समस्या अभी भी होती है।
क्या मुझे 'नई बाइटएरेइन इनपुट स्ट्रीम ("एक स्ट्रिंग" .getBytes()) के माध्यम से सामग्री भेजते समय बाइनरी का उपयोग करना चाहिए? – pstanton
मैं 100% निश्चित नहीं हूं। यह शायद इस तरह से सुरक्षित है। परीक्षण करने के लिए पर्याप्त जल्दी होना चाहिए। – PaulJWilliams
आपने इसे कैसे ठीक किया? मेरी भी यही समस्या है। – itro