0

我正在使用此代码“生成”(修改预制)具有自定义包名称和其他一些变量的 android 应用程序项目。该代码现在正在运行(nodejs npm)。

如果发送 url 请求: http://magicarate.eu01.aws.af.cm/generate?appName=Hey&packageName=com.hey&webUrl=http: //hey.com

它将生成一个应用程序名称为“Hey”、包名称为“com.hey”和 weburl “ http://hey.com ”的应用程序(很明显..)

(预制)应用程序的结构如下:

 App
   |--src
   |  |--package
   |    |-- name
   |       |-- file.java
   |
   |--res
   |  |--layout
   |  |  |--layout.xml
   |  |  
   |  |--drawable
   |     |--logo.png         <---
   |     
   |manifest.xml 

我想将 logo.png 更改为用户提供的文件,或者我将预制应用程序中的可绘制文件夹设为空,以便可以将用户提供的文件放在那里。

我更改变量和文件夹(包名称)的代码有点长,无法在此处发布。我已将其上传到 pastebin: http: //pastebin.com/z1sX6NRj

我几乎是一个初学者,我想知道最好的方法是什么以及如何做到这一点(从一开始就从用户那里获取图像),因为它与文本替换不同。

4

1 回答 1

1

使用http模块下载图像,然后使用文件系统模块将其保存在磁盘上。另请参阅Stream 模块

var http = require('http');
var fs = require('fs');

var file = fs.createWriteStream("destination.png");
file.on('close' function() {
    // image saved
    // make a zip now
});
var request = http.get("http://your/img.png", function(response) {
  response.pipe(file);
});

在你的情况下

function downloadAndSaveUserImage(url, done) {
    http.get(url, function(response) {
        var file = fs.createWriteStream("where/you/want/it/to/be.png");
        file.on('close' done);
        response.pipe(file);
    });
}

替换sendContentAsZip(destDir, res);

downloadAndSaveUserImage(req.query.imageUrl, function whenImageIsSaved() {
    sendContentAsZip(destDir, res);
});

您将需要检查 url 是否有效等。

于 2013-06-29T13:46:59.753 回答