gpt4 book ai didi

java - 如何从 Android 上传文件到 Node.js 服务器

转载 作者:行者123 更新时间:2023-11-30 05:09:56 25 4
gpt4 key购买 nike

我正在尝试将文件上传到 Node.js 服务器,但没有成功。

我不断收到错误 TypeError: Cannot read property 'filename' of undefinedNode 端,我只收到 onFailure 调用, 而不是 onSuccess

以下是我目前所拥有的:

Java 端

public void upload(final String filePath) {

AsyncHttpClient asyncHttpClient = new AsyncHttpClient();
RequestParams requestParams = prepareRequestParams(filePath);

asyncHttpClient.post(LOCALHOST_FILE_UPLOAD_URL, requestParams, new AsyncHttpResponseHandler() {
@Override
public void onSuccess(int statusCode, cz.msebera.android.httpclient.Header[] headers, byte[] responseBody) {
Log.v("MyApp", "SUCCESS");
}

@Override
public void onFailure(int statusCode, cz.msebera.android.httpclient.Header[] headers, byte[] responseBody, Throwable error) {
error.printStackTrace();
Log.v("MyApp", "FAIL");

}
});

}

private RequestParams prepareRequestParams(String filePath) {

InputStream inputStream = null;
try {
inputStream = new FileInputStream(filePath);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

RequestParams requestParams = new RequestParams();
try {
requestParams.put("image", inputStream, "image", new File(filePath).toURL().openConnection().getContentType());
} catch (IOException e) {
e.printStackTrace();
}
return requestParams;
}

Node 端

var storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, 'rev_uploads/')

console.log('file.fieldname : ' + file.fieldname)
},
filename: function (req, file, cb) {
cb(null, file.fieldname + '_' + Date.now() + path.extname(file.originalname))
}
})

var upload = multer({
storage: storage
})

app.use(express.static('public'));

app.post('/file_upload', upload.single('image'), function (req, res) {

console.log('file.fieldname : ' + req.image.filename)
//uploading.openIrfanView(__dirname, req.file.filename)

res.sendStatus(200);
})

为什么我会失败。

提前谢谢大家。

最佳答案

NodeJS

//multers disk storage settings;
const storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, './files/uploads/');
},
filename: function (req, file, cb) {
var datetimestamp = Date.now();
cb(null, file.fieldname + '-' + datetimestamp + '.' + file.originalname.split('.')[file.originalname.split('.').length - 1]);
}
}),
//multer settings
upload = multer({
storage: storage
}).single('file');



file.prototype.upload = function (req, res) {
console.log('=============================== Upload : Files ===============================');
let response = new Response();
upload(req, res, function (err) {
if (err) {
console.log('===== Files > Upload Error: ' + _util.inspect(err));
res.status(405).json(response.error(err, َ'Face to problem.'));
} else {
console.log('===== Files > Upload ok');
console.log(req.file.path);
res.status(200).json(response.success(req.file.path, 'Success'));
}
});
};

关于java - 如何从 Android 上传文件到 Node.js 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53908808/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com