我将从目前的事实开始 - 我正在成功上传 一个mp3文件到服务器 - 但通过hacky方式。
我有2 raw
个文件夹,你可以看到:
以下是上传文件的工作代码:
upload1()
{
let file = fs.path.join(fs.knownFolders.currentApp().path, "raw/a1.mp3");
var request = {
url: "http://posttestserver.com/post.php",
method: "POST",
...
};
var task = session.uploadFile(file, request);
task.on("progress", this.logEvent);
}
Here is the output for the successful upload (showing progress)
问题出在哪里?
正在从根raw
文件夹上载当前文件。 (proof)
但正确的方式(as I was told)是通过raw
文件夹或assets
文件夹上传,然后通过res://raw/a1.mp3
(或res://raw/a1
引用它})。
所以我已切换到:let file="res://raw/a1.mp3";
但得到了error:
错误错误:java.io.FileNotFoundException:找不到文件 路径:res://raw/a1.mp3
同样适用于:let file="res://raw/a1"; //without extension
- 收到错误:
JS:错误错误:java.io.FileNotFoundException:找不到文件 path:res:// raw / a1
问题:
如何访问raw
文件夹下的mp3文件? (不是外部文件夹而是资源文件夹)
答案 0 :(得分:2)
我不熟悉NativeScript,但这里是一个如何使用Java访问原始文件夹文件的示例,无论其类型如何:
public static final FileDescriptor getFDForResource(Context context, int resId) {
AssetFileDescriptor afd = context.getResources().openRawResourceFd(resId);
if (afd != null) {
return afd.getFileDescriptor();
}
return null;
}
public void readFile(int resId) {
FileDescriptor fd = getFDForResource(resId);
InputStream inputStream
if(fd != null) {
inputStream = new FileInputStream(fd);
byte nextByte;
while((nextByte = inputStream.read()) != -1) {
// Upload the file bytes to your server.
}
}
}
您希望将此代码放在Util类中,并使用NativeScript访问它。我确定有一些API可以做这样的事情,但我不熟悉这就是我所能提供的。