2013-03-08 3 views
3

Вот мой код:Изменить путь разделитель с помощью модуля пути

var thisImageName = thisRow["imagename"]; 
var thisImagePath = path.relative("./public", __dirname + "/public/uploads/" + thisImageName + ".jpg"); 
console.log(thisImagePath); // returns __dirname\public\uploads\ 
img.src = thisImagePath.split(path.sep).join("/"); 

Чтобы получить соответствующий путь изображения, я должен разделить разделитель пути, а затем присоединиться к массиву с соответствующим слэшем. Кто-нибудь знает более эффективный способ сделать это?

ответ

11

ответ Джона будет только заменить первый экземпляр «\»

img.src = thisImagePath.replace(new RegExp('\\' + path.sep, 'g'), '/'); 

заменить бы все из них.

Вы можете передать флаг 'g' в .replace, но это non-standard.

7

Кроме того, вы всегда можете получить прямую косую черту в путях по специально используя путь APIs Posix:

var p = path.posix.relative("./public", imagePath); 

EDIT: Этот API доступен только в версиях узла 0.12 или выше.

+0

Я поддержал это (вернув его к 0). Я предполагаю, что кто-то мог бы отказаться от него, если они попробовали его на узле 0.10 или более раннем, где он не был поддержан ... – laurelnaiad

+0

Спасибо, я отредактировал его, чтобы включить это предупреждение ... но мы все используем узлы последней стабильной версии сейчас правильно? ;) –

+1

Это лучший ответ. +1 –

Смежные вопросы