第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用apache common vfs上傳字節(jié)數(shù)組

如何使用apache common vfs上傳字節(jié)數(shù)組

白衣非少年 2023-08-16 16:09:40
我陷入了使用 apache common vfs 上傳字節(jié)數(shù)組的困境,下面是使用文件路徑上傳文件的示例,我用谷歌搜索但沒有得到使用字節(jié)數(shù)組上傳文件的解決方案? ? public static boolean upload(String localFilePath, String remoteFilePath) {? ? boolean result = false;? ? File file = new File(localFilePath);? ? if (!file.exists())? ? ? ? throw new RuntimeException("Error. Local file not found");? ? try (StandardFileSystemManager manager = new StandardFileSystemManager();? ? ? ? ? ? // Create local file object? ? ? ? ? ? FileObject localFile = manager.resolveFile(file.getAbsolutePath());? ? ? ? ? ? // Create remote file object? ? ? ? ? ? FileObject remoteFile = manager.resolveFile(? ? ? ? ? ? ? ? ? ? createConnectionString(hostName, username, password, remoteFilePath),? ? ? ? ? ? ? ? ? ? createDefaultOptions());) {? ? ? ? manager.init();? ? ? ? // Copy local file to sftp server? ? ? ? remoteFile .copyFrom(localFile, Selectors.SELECT_SELF);? ? ? ? result = true;? ? } catch (Exception e) {? ? ? ? throw new RuntimeException(e);? ? }? ? return result;}并且工作正常。下面是使用FTPSClient上傳字節(jié)數(shù)組的代碼?private boolean uploadFtp(FTPSClient ftpsClient, byte[] fileData, String fileName) {?boolean completed = false;?byte[] bytesIn = new byte[4096];?try (InputStream inputStream = new ByteArrayInputStream(fileData); OutputStream outputStream =? ftpsClient.storeFileStream(fileName);) {? int read = 0;? while ((read = inputStream.read(bytesIn)) != -1) {? ?outputStream.write(bytesIn, 0, read);? }? completed = ftpsClient.completePendingCommand();? if (completed) {? ?logger.info("File uploaded successfully societyId");? }?} catch (IOException e) {?logger.error("Error while uploading file to ftp server", e);?}?return completed;}
查看完整描述

2 回答

?
楊__羊羊

TA貢獻1943條經(jīng)驗 獲得超7個贊

這是一個老問題,但我遇到了同樣的問題,并且我能夠在不假設(shè)本地文件的情況下解決它,例如使用 ByteArrayInputStream,所以這對于與 pise 遇到相同問題的人可能很有用?;旧?,我們可以將輸入流直接復(fù)制到遠程文件的輸出流中。


代碼是這樣的:


InputStream is = ... // you only need an input stream, no local file, e.g. ByteArrayInputStream

    

DefaultFileSystemManager fsmanager = (DefaultFileSystemManager) VFS.getManager();

        

FileSystemOptions opts = new FileSystemOptions();

FtpFileSystemConfigBuilder.getInstance().setUserDirIsRoot(opts, true);

StaticUserAuthenticator auth = new StaticUserAuthenticator(host, username, password);

         

DefaultFileSystemConfigBuilder.getInstance().setUserAuthenticator(opts, auth);

        

String ftpurl = "ftp://" + host + ":" + port + "/" + folder + "/" + filename;

FileObject remoteFile = fsmanager.resolveFile(ftpurl, opts);

        

try (OutputStream ostream = remoteFile.getContent().getOutputStream()) {

    // either copy input stream manually or with IOUtils.copy()

    IOUtils.copy(is, ostream);

}

        

boolean success = remoteFile.exists();

long size = remoteFile.getContent().getSize();

System.out.println(success ? "Successful, copied " + size + " bytes" : "Failed");


查看完整回答
反對 回復(fù) 2023-08-16
?
當(dāng)年話下

TA貢獻1890條經(jīng)驗 獲得超9個贊

/**

?* Write the byte array to the given file.

?*

?* @param file The file to write to

?* @param data The data array

?* @throws IOException

?*/


public static void writeData(FileObject file, byte[] data)

? ? ? ? throws IOException {

? ? OutputStream out = null;

? ? try {

? ? ? ? FileContent content = file.getContent();

? ? ? ? out = content.getOutputStream();

? ? ? ? out.write(data);

? ? } finally {

? ? ? ? close(out);

? ? }

}


查看完整回答
反對 回復(fù) 2023-08-16
  • 2 回答
  • 0 關(guān)注
  • 163 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號